The Proof
The corpus.
900 living docs from 40 projects. One small agency's actual work — specs, plans, prompts, blueprints, reminders, agent-skills, explorations, issues; the experimental tier of loops, handoffs, decisions, and contracts; and the long tail of habits, workflows, and journals we haven't yet fit into the canonical taxonomy. Browse, search, steal what's useful.
Sorted by repo, then by most recently modified. Use the search page to filter by kind, tag, or repo.
agent-harnesses 11 docs
-
Agent Harnesses — Answers to the Plan's Targeted Questions
Phase 2 of the study plan. Not a survey of the study — three specific questions, answered by citing the profiles already written, in service of the Phase 3 synthesis decision.
inquiry/Targeted-Questions-for-Cross-Product-Shell.md -
aider
profiles/Profile__Aider.md -
autogen
profiles/Profile__AutoGen.md -
cline
profiles/Profile__Cline.md -
codex
profiles/Profile__Codex.md -
continue
profiles/Profile__Continue.md -
mcp-python-sdk
profiles/Profile__MCP-Python-SDK.md -
opencode
profiles/Profile__Opencode.md -
pi
profiles/Profile__Pi.md -
agent-harnesses/profiles/profile__goose
profiles/Profile__Goose.md -
agent-harnesses/profiles/profile__openhands
profiles/Profile__OpenHands.md
ai-labs 33 docs
-
Cross-Product Native Agent Shell — Synthesis and Architecture Decision
Phase 3 of the study plan, and its actual deliverable. Resolves the fork the 2026-05-18 in-app-agent docs left open — extend memopop-native or build standalone — with a recommendation, then defines what 'context switching' and 'dynamic skill/MCP loading' concretely mean, grounded in sixteen pinned repos' actual source rather than either the original spec or training-data folklore.
explorations/Cross-Product-Native-Agent-Shell.md -
In-App Agent Chat — As-Built vs. As-Specced (Internal Audit)
Phase 1 deliverable of the agent-harnesses/conversational-UI study plan. The four 2026-05-18 architecture docs got most of the shape right — but reality diverged from the letter of the spec in one load-bearing way: augment-it never built the shared @lossless/in-app-agent package, it built the WorkspaceAdapter pattern directly inside @augment-it/workspace instead. Memopop-native has zero agent code but a proven, generalizable Rust sidecar-dispatcher substrate. Dididecks is untouched. This changes what a cross-product native shell needs to reuse vs. build fresh.
explorations/In-App-Agent-Chat-As-Built-vs-As-Specced.md -
Study Agent Harnesses + Conversational UI, Then Decide the Cross-Product Native Shell
Before building a native cross-platform (Tauri) chat app that swaps context between augment-it, dididecks-ai, and memopop-ai and dynamically loads/unloads skills and MCP servers, pin two new studies (agent harnesses; Tauri/conversational-UI apps), audit the in-house prior art the 2026-05-18 in-app-agent docs already produced, read externally against specific open questions, then synthesize one architecture decision doc. No code lands in this plan.
plans/Study-Agent-Harnesses-and-Conversational-UI-Before-Cross-Product-Shell.md -
SurrealDB MCP + a verification skill — querying augment-it's canonical layer directly, starting with FreedomFest 2026
plans/SurrealDB-MCP-Plus-Skill-for-Canonical-Layer-Verification.md -
didi.sh — One Login, One Agent, Three Services
We bought didi.sh. The three organically-built VC-services tools — memos (memopop-ai), decks (dididecks-ai), and augment-it — become one product family: independent services coordinated by exactly two shared planes, a common identity service and a common agent named didi that loads skills per task.
explorations/Didi-sh-One-Login-One-Agent-Three-Services.md -
Shared Auth for Applied AI Labs
We're about to need a real auth story across three sibling apps in ai-labs — memopop-ai, dididecks-ai, and the just-arriving augment-it. None of them is at the scale that justifies Auth0/Clerk pricing or robustness. We want a small, owned auth system that handles OAuth (GitHub + Google Workspace), pre-shared invites delivered by WhatsApp or 1Password, organization-scoped permissions, and a viewer-tier for memos and decks published on client subdomains — with a roll-up seam stubbed from day one so we can wire cross-app dashboards later without rewriting clients.
explorations/Shared-Auth-for-Applied-AI-Labs.md -
Two Clients, One Flow — Corpora by Domain-Type, Auth, and Deployment Converge
reach-edu wants corpus→memos/decks by strategy; humain-vc wants the same by thesis. Both teams want to log in and check the work. Everything we anticipated — typed domains, shared auth, container deployment, corpus substrate — just became due at once.
explorations/Two-Clients-One-Flow-Corpora-Auth-and-Deployment-Converge.md -
Unlock: the humain-vc team (two people) logs into a deployed augment-it
One concrete user flow, written down so we build exactly what it needs and nothing else: a humain-vc team member signs in with her work email, lands in the humain-vc workspace, and works the thesis corpus — on a hosted URL, with Michael as superuser. Single-tenant deploy on purpose; per-session tenancy, admin UIs, and storage rearchitecture all explicitly deferred.
plans/Unlock-Humain-VC-Team-Access-To-Augment-It.md -
id.didi.sh — the Didi Identity Service
One small, owned identity service — headless-first API, a signed session cookie on .didi.sh, invite-only accounts created from inside whichever app the user arrived at. Built on Elixir/Phoenix: the one service in the estate where the implementation language is invisible by design, and the BEAM's reliability posture matches what an identity service actually is.
specs/Id-Didi-Sh-Identity-Service.md -
The Source Curation Surface — A Component Architecture for a Svelte Rebuild
A working single-file tool proved out what curating a research source list needs to feel like; this spec decomposes that proven behavior into a component-based Svelte surface — a runes store, a tree of small components, and a clean capability/API contract — so the rebuild is best-practice from line one.
specs/Source-Curation-Surface-Component-Spec.md -
The Source Curation Gate — A Convergent Prune-and-Promote Surface for AI-Assisted Web Research
Three apps independently grew the same organ: a human-driven step between web retrieval and content generation that ranks, prunes, and provenance-stamps sources before any prose exists. This blueprint extracts that organ into one independent, reusable surface — input is a raw LLM-generated resource list (usually Perplexity), output is a promoted, grounded corpus the writer is structurally unable to escape. It converges memopop's filesystem-first Sources.md, augment-it's pack-runner connector palette, and dididecks' CorpusItem provenance model into a single contract.
blueprints/Source-Curation-Gate.md -
The Drag in AI-Assisted Web Research — Diagnosis, Prior Art, and the Open Forks for a Source Curation Gate
AI-assisted web research and research-driven content generation produce so many hallucinated sources and so much noise-over-signal that going through it all creates a drag heavy enough that manual Google + Google Docs starts to look time-competitive. This issue records the diagnosis (the drag is structural, not a prompt problem — and our own corpus diagnosed it twice), reveals the prior art already scattered across dididecks-ai / augment-it / memopop-ai, and captures the open forks being grilled before we converge a reusable Source Curation Gate pattern.
issues/Drag-in-AI-Assisted-Web-Research-and-the-Source-Curation-Gate.md -
Corpus-Grounded Generation — Memory & Graph Layers for Producing Decks and Memos Without Drift
The promise is obvious: point an LLM at a pile of verified PDFs, extracted articles, and confirmed claims, and it should slash the time to a deck or a memo. The lived reality is drift — the model quietly fills gaps from its parameters, inventing research that sounds right and isn't. This maps an end-to-end pipeline (ingest → graph → retrieve → generate → verify) where memory and graph layers exist specifically to make every factual sentence in a deliverable trace back to a source span, and to make the model abstain when it can't.
explorations/Corpus-Grounded-Generation-of-Decks-and-Memos.md -
Install Auth Across Applied AI Labs Apps
Every app graduating out of `ai-labs/` — memopop-ai, dididecks-ai, augment-it, and the per-client deck workspaces dididecks already ships — needs the same shape of auth: signed-link invites for named stakeholders, optional OAuth for the wider audience, a passcode tier-3 fallback, and durable telemetry on every attempt. We don't need to re-derive that shape. The astro-knots family already converged on it, shipped it in production at calmstorm-decks and chroma-decks, and wrote it up at the parent level. This blueprint is the ai-labs handle on that pattern: what to pull in, which database backend to pick (Turso/libSQL when the calmstorm pattern is the right fit, Powabase/Postgres when the app also needs pgvector or wants GoTrue-managed OAuth out of the box), what to translate when the app is SvelteKit instead of Astro, and which org/identity conventions ai-labs apps inherit from the dididecks precedent.
blueprints/Install-Auth-Across-Applied-AI-Labs-Apps.md -
Cloud Variant of the Dididecks-AI Workspace — Recreating Local Privacy When the Filesystem Isn't Yours
Podium Education has a deck they want redesigned, and the engagement raises a question we've been deferring: the main dididecks-ai spec mandates a native (Tauri) workspace because that's where the hard data-privacy constraint lives, but several plausible clients can't or won't install a desktop app to participate. This exploration walks what it would take to ship a cloud variant of the dididecks-ai workspace that *meets the same privacy bar local-fs gets for free* — without abandoning open-source contributors who use the local filesystem path. The destination isn't pinned: the goal is to name the privacy properties local-fs is silently providing, decompose them into things a cloud runtime would have to do explicitly, and surface the forks (per-client containers vs shared runtime with row-level isolation vs local-fs-with-cloud-publish vs browser-only ephemeral) so the right one can be picked rather than drifted into.
explorations/Cloud-Variant-of-Dididecks-AI-Workspace.md -
Chat-As-Verb-Surface Patterns — How the In-App Chat Calls Skills, MCP Tools, and Scripts; How it Reads State and Anticipates Lightly
The recyclable patterns that let augment-it, memopop-ai, and dididecks-ai share a chat surface without sharing a package. Five conventions: capability adapters (skill / MCP / script) that all return the same envelope, a lifecycle event stream every capability emits so the chat can narrate and quality-check execution, a state-aware anticipation map keyed on activeView, three explicit response modes (answer / propose / invoke) for loose alignment, and a fourth cache-eligible system-prompt slab for active skills. Grounded in agentskills.io, MCP 2025-11-25, 12-factor-agents F4/F5/F7/F8, and the Frictionless TableSchema. Each pattern names the upstream prior art so future-you can re-read source instead of trusting the summary.
blueprints/Chat-As-Verb-Surface-Patterns.md -
Per-App Workspace Conventions — Discipline, Not a Shared Package
Each Applied AI Labs app — augment-it, memopop-ai, dididecks-ai — owns its own data model and ships its own workspace package. There is no universal @lossless/workspace package, because the intersection of memos, slide decks, and CRM-augmentation records is too small to be a meaningful shared abstraction. What IS shared is the *shape* of every per-app workspace: a singleton state class, a discriminated activeView union, a capability registry as the only mutation surface, an SSE event ingestion pattern that doesn't black-screen the WebView, and a typed WorkspaceAdapter interface the @lossless/in-app-agent chat package consumes. This blueprint codifies that shape so building a new app's workspace doesn't require re-deriving the conventions from scratch.
blueprints/Per-App-Workspace-Conventions.md -
Memory Layers for the In-App Chat Package
The chat surface in dididecks-ai, memopop-ai, and augment-it will only feel 'within our system' if the agent on the other side has fast, cheap, accurate access to our patterns, prior decisions, project state, and what it already learned about this specific client. This explores how the eight memory systems pinned in studies/memory-layers-for-agents map onto roles in the chat package, what we'd pick for v1 given that we already lean on Chroma, and what to defer.
explorations/Memory-Layers-for-the-In-App-Chat-Package.md -
Remote Mount Contract for @lossless/in-app-agent — How the Chat Surface Drives Federated Views Without Owning State
The three sub-questions that have been blocking the augment-it federation rewrite — how a capability returns 'mount this view', how the shell passes context to mounted remotes, and how remotes emit back into the shell — get answers borrowed from memopop's already-working FlowState pattern. The corrected architecture (third pass): state lives in per-app workspace packages (@augment-it/workspace, @memopop-ai/workspace, @dididecks-ai/workspace) per the [[Per-App-Workspace-Conventions]] blueprint. The chat package is UI-only — it speaks to whichever app it's mounted in through a typed WorkspaceAdapter interface. useWorkspace() (per-app) returns business state; useChat() (from in-app-agent) returns transcript and conversational state. Capability invocation goes through the workspace, not the chat. No typed event bus across federation seams. Same three-guards discipline the parent exploration committed to.
explorations/Remote-Mount-Contract-for-In-App-Agent.md -
In-App Agent Chat — Walking Skeleton Plan
Starter kit for tomorrow's session. Three days of conversation have produced an exploration, a spec, a memory-layers exploration, and a tenancy decision. This plan turns all of it into one session's worth of concrete work: scaffold the package, do the Chroma tenant migration, settle two open questions that block everything downstream, and ship slide.read end-to-end as the proof the abstractions hold.
plans/In-App-Agent-Chat-Walking-Skeleton.md -
Agent Capabilities — Hooking the Chat Surface into Memopop
A journey-mode walkthrough for the team: how the In-App Agent Chat pattern (originally scoped against dididecks) maps onto memopop-ai, where each layer of the architecture lives in the existing repo, and what the smallest read-only proof-of-life looks like. Drafted to be turned into slides — each H2 is a slide candidate.
plans/Slides_Agent-Capabilities_Hooking-the-Chat-Surface-into-Memopop.md -
The Anatomy of the In-App Agent Shell — Shell, Workspace, Window, Chat
When we said 'shell' we kept meaning four different things at once. Drawing the distinction explicitly: a thin layout frame, a per-app workspace package that owns business state, a visual workspace microfrontend (the 'Window'), and the conversational surface. The workspace is the source of truth — not the chat. Federation 2.0's singleton-module idiom guarantees one workspace instance across host + remotes; both Window and Chat subscribe to it and stay in realtime mirror automatically. Two configurations of the same contract, one for chat-primary apps (augment-it) and one for window-primary apps (memopop).
plans/Slides_Anatomy-of-the-In-App-Agent-Shell.md -
Per-App Workspaces and the Chat as Optional Surface — The Architecture We Walked To
The corrected architecture for the Applied AI Labs apps in three sentences. State of truth lives per-app in @augment-it/workspace, @memopop-ai/workspace, @dididecks-ai/workspace — packages each app owns, no universal data model package. The chat surface (@lossless/in-app-agent) is UI-only and consumes whichever app it's mounted in through a typed WorkspaceAdapter; it has zero domain knowledge. Both Window microfrontends and the Chat panel subscribe to the same workspace singleton through Module Federation, so realtime mirror is automatic. This deck captures the journey to that architecture — what we tried, what broke, what survived.
plans/Slides_Per-App-Workspaces-and-the-Chat-as-Optional-Surface.md -
In-App Chat as the Agent Surface for Client Apps
Instead of trying to fit dozens of anticipated client requests — 'redesign this slide', 'run the writer agent on the updated research', 'export in my brand kit' — into navigation, buttons, and command menus across dididecks-ai, memopop-ai, and augment-it, wire up a single chat surface inside each app that calls an LLM with our patterns, skills, and project context already loaded. Paying clients use our keys; lingering post-engagement clients bring their own. The chat is the menu.
explorations/In-App-Chat-as-Agent-Surface-for-Client-Apps.md -
In-App Agent Chat — Core Package Spec
Concretizes the chat-as-agent-surface exploration into a shippable package: capability registry schema, BYOK storage and proxy contract, chat UI component API, transcript schema, and a v1 acceptance scenario for dididecks. One shared package under ai-labs/packages/, per-app capability definitions, three guards that keep the agent inside our methods.
specs/In-App-Agent-Chat-Core-Package.md -
Add a Chroma Local UI Interface
Local Chroma in PersistentClient mode is an embedded SQLite library with no UI of its own. Three paths to a browseable surface — from a 30-line inspect script tonight to a /chroma route in the splash later — laid out in increasing commitment.
plans/Add-Chroma-Local-UI-Interface.md -
Context Vigilance Splash Page — Narrative Brief
Designer brief for the Context Vigilance splash. The functional plumbing exists; the structural skills are codified elsewhere. This doc is only about the *story* — the four-act narrative arc and the emotional move each act should produce.
plans/Context-Vigilance-Splash-Page-Narrative.md -
Track and Ingest Lossless Content into Chroma (with Change Detection)
A second ingestion pipeline parallel to the context-v corpus — for the ~5K Lossless content files scattered across the monorepo. Driven by its own sources map, with content-hash-based change detection so re-runs only re-embed what actually changed.
plans/Track-and-Ingest-Lossless-Content-into-Chroma.md -
Write Custom Chroma MCP Server (v0: a session-transcript ingester)
Defer the community djm81/chroma_mcp_server. Roll our own session-transcript ingester that writes into the same Chroma instance our corpus already lives in — preserving the metadata alignment that lets us cross-query corpus and conversation history together.
plans/Write-Custom-Chroma-MCP-Server.md -
ChromaDB as Context Improvement Across Everything, Everyone
Skeptical of vector databases at our scale until a founding-team demo showed me the product is no longer 'a place to put embeddings' — it is an ingestion layer for agent traces, session transcripts, and ambient developer signal that a small team can bend toward almost anything.
explorations/ChromaDB-as-Context-Improvement-Across-Everything-Everyone.md -
Collate Context Files into Context Vigilance as Repo & Project
A long-running, everywhere-distributed practice — context-v/ across a tree of pseudomonorepos — finally graduates into a project of its own, with a collator, a splash, and a vector index.
explorations/Collate-Context-Files-into-Context-Vigilance-as-Repo-&-Project.md -
Preferred Stack — uv over pip, and other defaults
reminders/Preferred-Stack.md -
ai-labs/explorations/when-claud-code-and-when-pi
explorations/When-Claud-Code-and-When-Pi.md
arthouse-site 2 docs
-
Services Section as a Tiered, Categorized Card Catalog
A Sveltia-CMS-driven Services surface where Categories sit in the top nav, service Cards display in overlapping decks, each Card belongs to a Tier (progressive reveal), exposes public + guarded copy, and lets the visitor add optional included_tags that increment the displayed price before sending the whole composed order to WhatsApp.
specs/Services-Section-as-Tiered-Card-Catalog.md -
Sveltia CMS — Constraints That Shape Architecture
Sveltia is a clean Decap CMS rewrite with significantly better UX, but it dropped Decap's plugin and custom-backend surfaces. Anything an agent or human plans on top of Sveltia must respect a short, hard list of what was deliberately not carried over — most importantly, the lack of a custom media library API.
issues/Sveltia-Constraints-for-CMS.md
astro-knots 90 docs
-
Dependency Upgrade Loop
Fan out across all active Astro Knots sites, upgrade dependencies, fix breaking changes, verify builds, write changelogs, and push — looping until all sites are clean.
loops/Dependency-Upgrade-Loop.md -
AI Photo-to-Illustration Transform for Arthouse
Exploring how to take a real client photograph — sometimes NSFW-sensitive — and return an obviously AI-generated illustrative version (anime, painterly, or stylized) that is safe to publish on the public arthouse-site portfolio.
explorations/AI-Photo-to-Illustration-Transform-for-Arthouse.md -
Image Catalog and ImageKit Hosting for Arthouse
A catalog-and-resolver content model that keeps the arthouse-site code repo public while client photography lives on ImageKit — including a privacy tier that lets NSFW originals exist in the catalog (for lineage) without ever appearing in rendered output.
specs/Image-Catalog-and-ImageKit-Hosting-for-Arthouse.md -
Polish Pass for Arthouse Site
A scoped polish initiative that takes arthouse-site from scaffold-complete to a client-presentable landing page — locked on dark-mode-first feminine arthouse mystique, with a private imagery convention and an AI photo-to-illustration pipeline for NSFW-sensitive source material.
specs/Polish-Pass-for-Arthouse-Site.md -
Astro Frontmatter: Avoid Inline Block Comments and Risky Regex Literals
Astro's `.astro` frontmatter is parsed by esbuild's TS pipeline before reaching the runtime, and the parser sometimes misclassifies `/* */` block comments and certain regex-literal shapes when they appear in expression-adjacent positions. The error message reports a position past EOF on the affected line, which makes the bug feel like a phantom. Workaround: prefer line comments and string methods in `.astro` frontmatter where you'd reach for an inline block comment or a slash-heavy regex.
reminders/Astro-Frontmatter-Avoid-Inline-Block-Comments-and-Risky-Regex.md -
Maintain Confidential Access with Persistent Sessions and Auth Telemetry
A server-gated, DB-backed access pattern for client-content workspaces: signed pre-authed links for direct stakeholders, two-role passcodes for everyone else, durable telemetry on every attempt, and a downstream-sharing attribution hack — designed so a busy client clicks once and stays in, and so every silent failure leaves a row we can investigate.
blueprints/Maintain-Confidential-Access-with-Persistent-Sessions-and-Auth-Telemetry.md -
Rethinking Confidential Access with Persistent Sessions and Auth Telemetry
The hypernova/dark-matter passcode pattern got us shipping, but the calmstorm-decks lockout — busy client, no telemetry, can't tell whether the cookie failed or the passcode was mistyped — exposes its limits. This exploration scopes the decisions for a v2 confidential-access shape: persistent (FB-style) sessions, durable auth telemetry, and a topology that keeps Astro SSG for content while letting a thin server tier own auth and identity.
explorations/Rethinking-Confidential-Access-with-Persistent-Sessions-and-Auth-Telemetry.md -
Wikilink Path Audit — mpstaton-site
Every Obsidian-style wikilink in mpstaton-site's content, grouped by top-level prefix. Edit each entry to set `path_resolved: true` and fill in `resolved_url`; the collected mappings become the EXTERNAL_DESTINATIONS config for the site's wikilink resolver.
plans/Wikilink-Path-Audit__mpstaton-site.md -
Wikilink Resolution System for LFM
A two-layer wikilink rendering system: LFM provides the abstract MDAST plugin that parses [[Obsidian-style]] backlinks; each Astro Knots site provides a config that resolves those wikilinks to local-or-external URLs and gives them visual treatment that signals the destination.
plans/Wikilink-Resolution-System.md -
Wrap Long String Values in Double Quotes
Long YAML string values — descriptions, titles with punctuation, URLs with query strings, ledes — should always be wrapped in double quotes. Cheap insurance against the entire class of YAML-syntax-collision bugs.
reminders/Wrap-Long-String-Values-in-Double-Quotes.md -
YAML Frontmatter Parsing Must Be Lenient
Across every Astro Knots site, content frontmatter parsing must tolerate messy YAML — log a warning and skip the file, never fail the whole build. No strict YAML parsers, ever.
reminders/YAML-Frontmatter-Parsing-Must-Be-Lenient.md -
Callout System (LFM)
Three-file split for rendering Lossless Flavored Markdown callouts — structure, type registry, and mode-aware styles. Every type obeys the light/dark/vibrant mode switcher.
sitemap/components/Component__Callout-System.md -
Versatile Component Library for Video Players
Videos links can come from various sources, and include metadata, playlists, and other information that handled to maximize the value of video content, all from simple markdown triggers.
specs/Versatile-Component-Library-for-Video-Players.md -
Converge on an Animations Playbook
A short, well-made motion loop can do work that a paragraph and a screenshot can't — but the tooling that produces Lottie files is concentrated in a few mostly proprietary places. This is a tour of the format, the production tools, the honest lock-in, and a tiered playbook for the Astro Knots family.
explorations/Converge-on-an-Animations-Playbook.md -
Implementing Full-Text Search by Default
Every Astro Knots site should ship with full-text search out of the box. This is a tour of what that costs, why Pagefind (a Rust-powered static indexer) is the strong default, and what the runner-up libraries are for the cases where it isn't.
explorations/Implementing-Full-Text-Search-by-Default.md -
Ideogram Style Prefix for Splash OG Images
Reusable Ideogram preamble that conditions generated OpenGraph and share images to match the astro-knots splash — knot-and-thread motif, the splash's three-mode palette, and an editorial typographic sensibility. Paste before your subject line.
prompts/Ideogram-Style-Prefix-for-Splash-OG-Images.md -
Generate a Pseudomonorepo Rollup of Changelog and Context
How an Astro splash site for a pseudomonorepo aggregates each child submodule's changelog/ and context-v/ into one feed — with provenance, without runtime dependencies on the GitHub API, and without auth token plumbing in CI. The deliberate-sync model: a human runs `pnpm rollup:sync`, content lands in src/rollup/, gets committed, deploys like any other static asset.
blueprints/Generate-a-Pseudomonorepo-Rollup-of-Changelog-and-Context.md -
Build a Fundraise Deck Workspace
Step-by-step playbook for standing up a private, gated, two-surface fundraise/teaser deck workspace from scratch. Captures the patterns proven on sites/calmstorm-decks during the week of 2026-04-30 → 2026-05-03, written as instructions for the next site rather than as a retrospective. Use this when initializing a new client deck site under astro-knots/sites/.
blueprints/Build-a-Fundraise-Deck-Workspace.md -
Build a Promotion Surface for Investment Opportunities
Architecture for a hard-gated, multi-opportunity promotion surface inside mpstaton-site. Each opportunity gets a hub page that conditionally surfaces deck and memo materials behind real authentication, optimised for AI-assisted variant iteration in 3-5 minute cycles.
blueprints/Build-a-Promotion-Surface-for-Investment-Opportunities.md -
Set up a Splash Page with Changelog and Context-V Rendering
Brief prompt for scaffolding a small standalone repo (its own GitHub project, deployed to GitHub Pages) that renders its own changelog and context-v markdown through @lossless-group/lfm.
prompts/Set-up-a-Splash-Page-with-Changelog-and-Context-V-Rendering.md -
Codifying a Comprehensive Extended Markdown Flavor and Shared Package
A specification for a named, versioned extended markdown flavor that codifies our existing rendering capabilities, incorporates features from GFM, Obsidian, MDX, and directive-based systems, and defines a wish list for future development — all backed by a shared remark/rehype package.
specs/Codifying-a-Comprehensive-Extended-Markdown-Flavor-and-Shared-Package.md -
Practices to Sense-Make Context Vigilance at Scale
An exploration of lightweight conventions, indices, templates, and tooling that keep a context-v library legible as it grows from dozens to hundreds of documents — without introducing a new system to maintain.
explorations/Practices-to-Sense-Make-Context-Vigilance-at-Scale.md -
Context-V — Context Vigilance for AI-Native Software Teams
A working library of the documents we feed to Claude Code so we can build sites, apps, and design systems at remarkable speed — and a directory schema that keeps that library legible as it grows.
README.md -
Web Research Agents for Content Augmentation
When a community member adds a tool we haven't authored content for, we want to point an agent at a URL or company name and have it fill out the YAML frontmatter. Here's what shipping that actually looks like in 2026 — and why most of the "agent framework" hype is the wrong tool for the job we have today.
explorations/Web-Research-Agents-for-Content-Augmentation.md -
Write a Changelog Prior to Meaningful Commits
A quick reference for writing a changelog prior to meaningful commits.
reminders/Write-a-Changelog-Prior-to-Meaningful-Commits.md -
Maintain an Interactive Polling System
Implementation blueprint for embeddable, theme-aware interactive polls on Astro SSG sites — covering data model, storage progression from flat-file to database, real-time mechanics, live-meeting authoring motions, vote integrity, and Svelte + GSAP UI contracts.
blueprints/Maintain-an-Interactive-Polling-System.md -
Maintain an Interactive Polling System
Implementation blueprint for embeddable, theme-aware interactive polls on Astro SSG sites — covering Session/Poll data model, Astro DB on Turso storage, DB→markdown materialization for archive, live-meeting authoring motions, and Svelte + GSAP UI contracts. v0.0.1 ships four templates and one live session.
blueprints/Maintain-an-Interactive-Polling-System--v2.md -
Choosing an Image Generator for Text-on-Background Banners
A snapshot of the AI image-generation landscape as of April 2026, focused on the specific job of producing release-banner-style images with legible title text and brand-consistent visual style — the kind of asset Anthropic, Windsurf, Linear, and Vercel attach to changelog entries and release announcements.
explorations/Choosing-an-Image-Generator-for-Text-on-Background-Banners.md -
Quirks of Obsidian Flavored Markdown
A quick reference for the quirks of Obsidian Flavored Markdown.
reminders/Quirks-of-Obsidian-Flavored-Markdown.md -
Maintain Design System and Brand Kit Motions
Conventions for the two reference pages every Astro-Knots site ships — Brand Kit (brand experience essentials) and Design System (component catalog) — including scope split, URL standardization, theme/mode integration contract, and maintenance motions.
blueprints/Maintain-Design-System-and-Brandkit-Motions.md -
Maintain Themes and Modes Across CSS and Tailwind
Implementation blueprint for dual-axis theme and mode control using Tailwind CSS v4 custom properties, with runtime utilities and Vitest verification.
blueprints/Maintain-Themes-Mode-Across-CSS-Tailwind.md -
New Site Quickstart Guide
Step-by-step guide for scaffolding a new Astro site in the astro-knots monorepo, from empty directory to working markdown rendering.
prompts/New-Site-Quickstart-Guide.md -
Sequential Steps or Tasks to Workthrough
You can prompt your AI Assistant via chat, but it's hard to manage a complex series of tasks that way. Even harder to retrace your steps or share your work. Thus, this recurring prompt.
prompts/Sequential-Steps-or-Tasks-to-Workthrough.md -
Exploring GitHub Actions for Package Publishing
A practical walkthrough of what GitHub Actions are, how they work, and how to use them to publish packages to JSR and GitHub Packages with provenance — written for someone who has never set up CI/CD before.
explorations/Exploring-GitHub-Actions-for-Package-Publishing.md -
Remark-Citations: A Unified Plugin for Hex-Code Footnote Management
A standalone remark plugin that transforms footnote identifiers (hex codes, numeric, or mixed) into sequentially-numbered citations with structured metadata parsing, designed for the unified/remark ecosystem and bundled into @lossless-group/lfm.
specs/Remark-Citations-Plugin-for-Hex-Code-Footnote-Management.md -
Create an Image-Heavy Portfolio Website for Boutique E-Commerce
A specification for a mobile-first, image-heavy portfolio site with dark and vibrant modes, carousel-driven galleries, tiered pricing cards, WhatsApp CTA, and SEO landing pages — all managed through markdown content and deployable independently from the Astro-Knots pseudomonorepo.
specs/Maintain-an-Image-Heavy-Portfolio-Site.md -
Flare: Concentric Wobble Rings
Creative brief and technical spec for an interactive concentric-rings animation — imperfect circles radiating from an off-center origin with mouse hover repulsion and click ripple effects. Inspired by greenoaks.com.
prompts/Flare__Concentric-Wobble-Rings.md -
Design System Pages Per Site
Every site should have a design-system route with browsable pages for components, flare, and layouts — built with zero-friction by Code Assistants, not a third-party documentation tool.
reminders/Design-System-Pages-Per-Site.md -
Flare Components — Creative Workflow
Flare is our naming convention for design-oriented components — images, illustrations, and animations as code. This reminder covers naming, preferred tech, and the creative brief workflow.
reminders/Flare-Components-Creative-Workflow.md -
Improvising within Design System Color Palettes
A reminder to AI code assistants and developers: use named colors and design tokens; when improvising raw hex or rgba values, reintegrate them into the system.
reminders/Improvising-within-Design-System-Color-Palettes.md -
Portfolio-Wide Job Aggregator
A specification for scraping, aggregating, and displaying job openings across a venture capital firm's portfolio companies — built as a reusable pattern for any VC client site.
specs/Portfolio-Wide-Job-Aggregator.md -
New Homebrew Formulae Worth Knowing About
A quick-hit survey of six new Homebrew formulae — dispenso, jsongrep, opentimestamps-client, proxelar, qtcanvaspainter, and qttasktree — with an honest assessment of what each does and whether our dev team should care.
explorations/New-Homebrew-Formulae-Worth-Knowing-About.md -
Understanding the JavaScript Runtime and Package Manager Landscape
A ground-up exploration of what Node, Deno, Bun, npm, pnpm, Yarn, Vite, tsup, and esbuild actually are, why they exist, how they relate to each other, and when to use which — because the JavaScript ecosystem never explains itself.
explorations/Understanding-the-JavaScript-Runtime-and-Package-Manager-Landscape.md -
Tags Must Use Train-Case
All tags in YAML frontmatter must use Train-Case — capitalize each word, hyphens between words, no spaces, no underscores, no all-lowercase.
reminders/Tags-Must-Use-Train-Case.md -
Implement Context-V Fetcher for mpstaton-site
Step-by-step implementation guide for adding a build-time GitHub content fetcher to mpstaton-site that pulls context-v documents from multiple repos.
prompts/Implement-Context-V-Fetcher-for-mpstaton-site.md -
Context-V GitHub Fetcher for Multi-Repo Content Aggregation
A build-time content fetcher that pulls context-v documents (Specs, Blueprints, Prompts, Reminders) from multiple GitHub repositories, enabling lossless.group and mpstaton.com to render current project documentation without manual copying or submodules.
specs/Context-V-GitHub-Fetcher-for-Multi-Repo-Content-Aggregation.md -
Develop a Slides-only Astro Site for a Fundraise Process
A slides-only Astro site that stays consistnent with relevant Context Vigilance files fed into AI Assistant context.
specs/Develop-a-Slides-only-Astro-Site-for-a-Fundraise-Process.md -
Maintain an Elegant Open Graph System
A scalable, consistent architecture for Open Graph metadata optimized for the messaging-first share economy.
blueprints/Maintain-an-Elegant-Open-Graph-System.md -
Citation System Architecture
A citation and reference management system for Astro sites using hex codes as stable identifiers that convert to sequential integers at render time.
blueprints/Citation-System-Architecture.md -
Codeblock Syntax Highlighting with Shiki
Blueprint for implementing syntax-highlighted code blocks across astro-knots sites using Shiki with the tokyo-night theme and reusable wrapper components.
blueprints/Codeblock-Syntax-Highlighting-with-Shiki.md -
Styles Architecture Blueprint
Architecture blueprint for Dark Matter's CSS and Tailwind v4 theming system, defining named brand colors, derived scales, semantic tokens, and three display modes.
blueprints/Styles-Architecture-Blueprint.md -
Papermark Self-Hosted Dataroom Deployment
Complete deployment specification for self-hosting Papermark as an open-source virtual data room for sharing investment memos, pitch decks, and due diligence documents.
Papermark-Self-Hosted-Dataroom-Deployment.md -
Implement Portfolio with Confidential Access in New Site
Step-by-step implementation plan for adding portfolio features with confidential access control to the dark-matter site, based on proven patterns from hypernova-site.
prompts/Implement-Portfolio-with-Confidential-Access-in-new-Site.md -
Page: Partner with Us
Prompt plan for creating a tabbed Partner with Us page showcasing different LP types including corporate investors, family offices, fund of funds, and institutional managers.
prompts/Page__Partner-with-Us.md -
Set Up Index and Basic Components Using Brand Theme
A prompt plan for evolving index pages and basic components to use the brand theme system instead of hard-coded colors, with step-by-step instructions for Cascade/Windsurf.
prompts/Set-Up-Index-and-Basic-Components-using-Brand-Theme.md -
Astro Knots is not a True Monorepo
A reminder that Astro-Knots is organized like a monorepo but functions as a collection of independent Astro projects for convenient pattern porting.
reminders/Astro-Knots-is-not-a-True-Monorepo.md -
Preferred Stack
A quick reference for the preferred technology stack: HTML/CSS first, Astro for SSG, Svelte for interactivity, Tailwind for styling, and no React.
reminders/Preferred-Stack.md -
Team Pages Specification
Agency-wide specification defining how astro-knots sites should implement data-driven team pages with role-based grouping, shared data models, and brand theming.
sitemap/pages/team/Team-Pages-Specification.md -
Team Spans Page Spec
Specification for a responsive grid layout displaying team members grouped by roles in contiguous spans with CSS Grid and consistent card styling.
sitemap/pages/team/Team-Spans-Page-Spec.md -
In The News
Specification for a media coverage section with article display components, sidebar layout, and links to relevant press coverage of portfolio companies.
specs/In-The-News.md -
Introducing Features and UI Components
Prompt for introducing features and UI components to the Hypernova site, including team pages, responsive design patterns, and branded exports.
prompts/Introducing-Features-and-UI-Components.md -
Removing Unnecessary Code Step-by-Step
We have developed a number of great patterns, components, and utilities that we use on a regular basis. To start with a robust set of included functionality, we cloned The Water Foundation site (twf_site), but now need to strip out any code that is not directly related to the Hypernova brand and desired site functionality.
prompts/Removing-Unnecessary-Code-Step-by-Step.md -
Dynamic Webpage to Display Portfolio w Authentication
Dynamically display portfolio information on a branded webpage, with certain types of information only displayed for certain privileges connected to authentication.
specs/Dynamic-Webpage-to-Display-Portfolio-w-Authentication.md -
Jumbotron Popdown Patterns
Design and implementation patterns for consistent jumbotron popdown menus in the Lossless UI.
blueprints/Jumbotron-Popdown-Patterns.md -
Exploring Publishing Component Library for VC Firms
Strategic exploration of publishing @knots packages as a component library for venture capital firms, evaluating approaches from Web Components to shadcn-style CLI distribution.
strategy/Exploring-Publishing-Component-Library-for-VC-Firms.md -
Confidential Content Access Control Blueprint
A tiered pattern for protecting privileged or confidential content across astro-knots sites, from simple passcodes to full OAuth integration.
blueprints/Confidential-Content-Access-Control-Blueprint.md -
GitHub Secure Content Pattern
A pattern enabling Astro sites to fetch confidential content from a private GitHub repository at runtime, keeping sensitive documents out of static assets.
blueprints/GitHub-Secure-Content-Pattern.md -
Slides System for Astro and Markdown
A comprehensive specification for building presentation slide systems in Astro-Knots sites with RevealJS, Three.js, and full theme/mode integration.
blueprints/Slides-System-for-Astro-and-Markdown.md -
astro-knots/agent-skills/dependency-upgrade-loop/skill
Fan out across all active Astro Knots sites, upgrade dependencies in safe → risky order (patch/minor first, then major bumps like Astro and TypeScript), fix breaking changes, verify builds with `pnpm build` + `pnpm exec astro check`, write changelog entries, and push submodules. Loops until every site is current. Invoke via `/loop` to self-pace across all sites, or pass a specific site name to target one.
agent-skills/dependency-upgrade-loop/SKILL.md -
astro-knots/explorations/choosing-the-right-datastores
explorations/Choosing-the-Right-DataStores.md -
astro-knots/explorations/understanding-cms-and-hosting
explorations/Understanding-CMS-and-Hosting.md -
astro-knots/issue-resolution/astro-check-type-errors-on-mpstaton-site
issue-resolution/Astro-Check-Type-Errors-on-mpstaton-site.md -
astro-knots/issue-resolution/documentation-gaps-blocking-new-site-onboarding
issue-resolution/Documentation-Gaps-Blocking-New-Site-Onboarding.md -
astro-knots/issue-resolution/hot-reload-for-raw-filesystem-content
issue-resolution/Hot-Reload-for-Raw-Filesystem-Content.md -
astro-knots/issue-resolution/issue-of-saving-stack-edits
issue-resolution/Issue-of-Saving-Stack-Edits.md -
astro-knots/issue-resolution/resolving-mode-switching-across-multiple-components
issue-resolution/Resolving-Mode-Switching-Across-Multiple-Components.md -
astro-knots/issue-resolution/scripting-across-multiple-tables-in-nocodb
issue-resolution/Scripting-across-Multiple-Tables-in-NocoDB.md -
astro-knots/issue-resolution/ssh-key-passphrase-prompts
issue-resolution/SSH-Key-Passphrase-Prompts.md -
astro-knots/issue-resolution/workspace-vs-jsr-for-lfm-consumers
issue-resolution/Workspace-vs-JSR-for-LFM-Consumers.md -
astro-knots/prompts/author-a-specification-markdown-file-in-context-v
prompts/Author-a-Specification-Markdown-File-in-Context-V.md -
astro-knots/prompts/discuss-how-to-publish-long-form-like-ebook
prompts/Discuss-how-to-Publish-Long-Form-like-eBook.md -
Fetch Brand and Tokens from Client Site
Extract colors, fonts, and design tokens from a client's existing website to bootstrap theme.css with brand-aligned values. Uses curl/fetch to grab CSS and design assets.
prompts/Fetch-Brand-and-Tokens-from-Site.md -
Preference for Shortcuts in Config to Absolute Paths
reminders/Preference-for-Shortcuts-in-Config-to-Absolute-Paths.md -
astro-knots/reminders/rule-to-assure-collection-schema-is-flexible
reminders/Rule-to-Assure-Collection-Schema-is-Flexible.md -
astro-knots/sitemap/components/component__message-hierachy-bare-component
sitemap/components/Component__Message-Hierachy-Bare-Component.md -
astro-knots/sitemap/components/component__rapid-slide-search--nav
sitemap/components/Component__Rapid-Slide-Search-&-Nav.md -
astro-knots/sitemap/dojo_index
sitemap/dojo_index.md -
astro-knots/sitemap/layouts/sections/section__areas-of-venture
sitemap/layouts/sections/Section__Areas-of-Venture.md -
astro-knots/specs/dynamic-portfolio-page-specification-and-implementation-plan
specs/Dynamic-Portfolio-Page-Specification-and-Implementation-Plan.md -
astro-knots/specs/include-full-search-as-a-default
specs/Include-Full-Search-as-a-Default.md
augment-it 109 docs
-
Syncthing for Collaborator Access to the Corpus (R2 Backup Already Decided)
R2 already won the backup leg — rclone, not a live mount. This is the separate, still-open question: could Syncthing give other humans live access to the same corpus, without breaking the single-writer discipline that's kept things sane so far?
explorations/Syncthing-For-Collaborator-Access-To-The-Corpus.md -
Issue: How People, Organizations, and Their Relationships Actually Enter SurrealDB
A 'get my head straight' issue, not a bug — augment-it was built one organic problem at a time, so the canonical layer can already do more than the operator remembers or can find in the UI. This traces the real mechanism end to end, verified against live data, before touching the next reach-edu event CSV.
issues/How-People-Orgs-And-Relationships-Actually-Enter-SurrealDB.md -
Issue: Person · DB Resolver UI needs to accommodate multiple organizations per person
Stub — the per-row org section in apps/person-db-resolver only resolves ONE org affiliation per row (one org-name column, one role column, one match/create action). Real bios routinely name several current and past affiliations for the same person; the UI has no way to add a second, third, or Nth org against an already-resolved person without re-running the whole row.
issues/Person-DB-Resolver-Needs-Multiple-Organizations-Per-Person.md -
Plan stub: ingest the next reach-edu event CSV into the canonical layer
The mechanism already exists and is proven twice over (turning-jobs, FreedomFest) — this is the sequence to run the moment the next event CSV lands, so it's 'follow the stub' instead of 're-derive the pipeline.'
plans/Ingest-Next-Reach-Edu-Event-CSV-Into-Canonical-Layer.md -
Pickup notes — 2026-07-13: deploy hardening, doc audits, credential hygiene
Steps 1–10 of the humain-vc unlock flow are done and confirmed live at augment.didi.sh. This session closed out a string of production-only bugs and stale docs found by actually using the deployed app, and scoped what Step 11 (corpus backup) needs before it can start.
plans/pickups/Pickup-2026-07-13.md -
Build order: the humain-vc unlock flow, step by step
The execution sequence for Flow 1 (Michael + Aniel, side-by-side thesis corpus building on a hosted augment-it) — each step names its repo, files, and verification so any fresh session can pick up mid-sequence. The strategy and scope cuts live in the ai-labs plan; this is the how.
plans/Build-Order-Humain-VC-Unlock-Flow.md -
augment-it has outgrown one flow — ROTATION is the CSV-augmentation pipeline's shape wearing a general-purpose name, and strategy-curator's promotion to its head is a splice, not a fit
augment-it started as one thing — augment a CSV, row by row — and ROTATION (shell/src/remotes.ts) is that flow's shape, hardcoded as THE numbered nav. Every use case since (DB-canonicalization for reach-edu's CRM exit, per-org/person corpus curation, now domain/thesis curation for humain-vc) has been reconciled onto that one array instead of recognized as its own flow. Strategy Curator's 2026-07-06 'promotion to the head of ROTATION' is the symptom: a domain-curation session doesn't hand off into recordCollector, but ROTATION was the only navigation primitive that existed, so that's where it landed. The fix isn't a bigger ROTATION array — it's a 'what are you trying to do?' front door that picks which flow mounts, so a use case that isn't CSV-row augmentation stops being forced to pretend it is.
explorations/Augment-It-Has-Outgrown-One-Flow-The-Choose-A-Flow-Front-Door.md -
SurrealDB MCP + a verification skill — querying augment-it's canonical layer directly, starting with FreedomFest 2026
plans/SurrealDB-MCP-Plus-Skill-for-Canonical-Layer-Verification.md -
Strategy Curator — An Entry-Point App for augment-it
Pick or create a strategy, gather sources for it (metadata first, full content on demand, PDFs preserved), and pull extracts — without the strategy↔source↔funder↔person graph ever decoupling. The trick: a canonical source registry in SurrealDB owns identity; the client's filesystem owns usage; a shared UUID is the only bond.
specs/Strategy-Curator-Entry-Point-for-Augment-It.md -
Migrate off the deprecated `nats` package to the `@nats-io/*` scoped v3 client — swap `nats@2` for `@nats-io/transport-node@3` across all 10 services, drop the removed `JSONCodec` in favor of `JSON.stringify` + `msg.json()`, and prove the inter-service bus still round-trips live before committing
The monolithic `nats` package (we're on `^2.28.0`) is fully deprecated — pnpm flags it on every install. nats.js v3 split the library into scoped `@nats-io/*` packages; for our pure-core usage the whole bus moves to `@nats-io/transport-node@3.4.0`. The surface is small and uniform — `connect`, `subscribe` (84×), `publish` (46×), `request` (30×), and `JSONCodec` encode/decode across 27 files in 10 services, with zero JetStream, KV, queue groups, or headers — so the migration is mechanical, but it touches every service's message plumbing at once, and the one real API change (the removed codec) rewrites how every message is encoded and decoded. This plan gives the next session an exact old→new mapping, a one-service pilot that proves the round-trip on a live bus, a per-service migration checklist, and a full-stack verification gate. The NATS server itself is untouched — this is a client-library swap; the wire protocol is unchanged.
plans/Migrate-off-Deprecated-nats-Package-to-nats-io-Scoped-v3.md -
Grilling on the DB Resolver — questions to settle before v0.0.0.2 / v0.0.0.3
Before building the next resolver iterations, a hard pass over the open decisions — where the join key lives, whether a slug can be edited without breaking everything, and whether 'opportunities' reopens the CRM-stays-in-Decile call. Answers get folded back into the spec.
issues/Grilling-on-DB-Resolver--Future-Versions.md -
Record ↔ DB Resolver — operator-driven match/create bridge from row-store records to canonical organizations
The row-store records and the SurrealDB canonical orgs never got bridged. The resolver is the per-record surface that closes the gap: for each record, confirm which canonical org it is (→ additive enrich) or create a new one — one at a time, operator in the driver's seat.
specs/Record-DB-Resolver.md -
Connecting To And Using SurrealDB
The one place that codifies how augment-it talks to SurrealDB Cloud — the five env vars, the connect → signin → use dance, the client-tagging write contract, and the dev-only-credentials posture that a proxy service eventually replaces.
blueprints/Connecting-To-And-Using-SurrealDB.md -
Workspaces as Tenant Primitive — toggling, tenant-aware microservices, per-tenant env-var pickup, and the seam that lets MCPs and connectors vary per client
Augment-It (and, by inheritance, its sibling pillar apps memopop-ai and dididecks-ai) needs a tenant primitive named workspace — the boundary that says 'humain-vc' vs 'reach-edu' vs whoever comes next. The terminal state is rich: per-workspace branded theme, team membership, roles + permissions, registration flow, auth, per-tenant choice of LLM provider / CRM / MCP server / search connector / storage destination. We are filesystem-backed and local right now, so this spec lays out the vision once and then scopes baby step 1 down to its bones: a workspace toggle, a workspace-aware envelope on every microservice request, I/O routing to `clients/<slug>/`, and a per-workspace `.env` pickup that resolves through a connector-config seam designed to absorb Decile-shaped (and future MCP-shaped, future LLM-shaped) per-tenant integrations without re-design. Inspired by [[Cloud-Variant-of-Dididecks-AI-Workspace]] but diverges on storage (filesystem-now vs cloud) and on cross-cutting reach (this is the contract sibling pillar apps inherit, not a dididecks-only artifact).
specs/Workspaces-as-Tenant-Primitive.md -
JuiceFS — POSIX-Over-Object-Storage (Explored, Then Set Aside for rclone-to-R2)
Explored JuiceFS to give the corpus a 'path off local.' Verdict: wrong shape for one-person, local-first content work — it's a network drive needing a macOS kernel extension, not Dropbox. Superseded by automated rclone sync to Cloudflare R2. Kept for the hard-won R2-credential recipe (which still works).
explorations/JuiceFS-Pinned-Path-Off-Local-Substrate.md -
The Moat Is Grounded Deliverable Production, Not Chat
Chat-over-documents is commoditizing fast; the durable value is the last mile — turning a client's knowledge into the deck or memo they actually ship, with every claim traceable to source. dididecks and memopop are two renderers of one grounded content model.
explorations/The-Moat-Is-Grounded-Deliverable-Production-Not-Chat.md -
First-Pass Corpus Quality Scan for reach-edu — a measured before/after baseline of the RAG corpus
Before wiring RAG/grounding over the reach-edu corpus, take a read-only baseline of what's actually there — 517 markdown files across 57 funder dirs (140 still in inbox). A fresh Claude Code session inventories, scores, and reports corpus quality so 'after' is comparable to 'before.' Diagnostic only — it changes nothing.
plans/First-Pass-Corpus-Quality-Scan-for-reach-edu.md -
Funder-Fit Engine — Org-Anchored Corpora and the Bidirectional Story↔Funder Cycle
Fundraising is a two-way match: understand a funder and build a story that answers them, or take a committed story and find the funders it unlocks. Both directions run on one substrate — a trustworthy, per-organization corpus. This maps the path to that engine, and argues the differentiator is KAG (graph-grounded), not plain RAG, because we just built the graph.
explorations/Funder-Fit-Engine-Org-Corpora-and-the-Story-Unlock-Cycle.md -
Joined People UI and the Network-First Pivot — augment-it's sibling-flow to org-first augmentation, and the canonical/proprietary layer split underneath it
Org-first and people-first aren't two flows but two pivot points over the same org↔people join. A canonical layer (LinkedIn truth, refreshable, shareable across clients) split from a proprietary layer (this client's commentary, engagement-scoped, never shareable) — reads it against the CRM platforms that almost got it right (Attio, Affinity, Gong, SalesQL, Crawlbase), and lands on sub-scale plus domain-opinionated -- as the competitive position the big platforms structurally can't occupy.
explorations/Joined-People-UI-and-the-Network-First-Pivot.md -
Personal-link observations need named query lenses — without them, an accumulating fact log goes uninspected
The `has_personal_link` observation predicate added with the PersonalLinks pulse-dimension stores rich qualifiers (`kind`, `title`, `url_domain`, `org_id`) that we expect to query in specific shapes — per-person presence rollup, per-org corpus rollup, kind-filtered slices for analyst views. None of those queries exist yet. As personal-links accumulate (a single thought leader can easily contribute 50+), the operator will hit 'I have the data but no way to look at it' unless we name the lenses up front and ship them as we hit the friction.
issues/Personal-Link-Observations-Need-Query-Lenses.md -
Canonical Entity Registry on SurrealDB Cloud — just write records
SurrealDB Cloud is up at main/main with three SCHEMALESS tables (persons, organizations, affiliations). Goal: write records from tonight's CSV+JSONL into those tables. SCHEMALESS stays. No field discipline up front.
plans/Canonical-Entity-Registry-on-SurrealDB-Cloud.md -
Client tagging on canonical writes — every observation carries the client that produced it, and every canonical entity carries the materialized set of clients that can see it
The canonical layer (persons, organizations, events, locations on SurrealDB main/main) is cross-client by design — one row per real-world entity, deliberately shareable across reach-edu, humain-vc, and any future client. That sharing is the point. But the operator still needs to know, at a glance, *which clients have touched this entity*: who first surfaced them, who's edited them since, who currently has them visible in their workspace. The pattern: every observation carries a `client` field; every entity carries a materialized `client_access` array (sorted by first-touch time). Reads are filtered by `WHERE client_access CONTAINS '<current-workspace-slug>'`. Writes always stamp the current workspace into the observation. Three forms of 'touched' (entered, updated, currently available) all collapse into the observation log — no separate access table, no separate audit table.
specs/Client-Tagging-on-Canonical-Writes.md -
Pulse pattern — one operator burst against one entity, expressed as N independent pulse-dimensions composed in a pulse-surface, each dimension potentially owning its own microservice
Building the first version of the person-enrichment remote surfaced a pattern hiding inside the existing per-record / per-flow vocabulary. Operators don't think in 'steps' when they're enriching one person — they think in *bursts*. One Google search reveals a name, a LinkedIn URL, an X handle, two alt emails, and which org the person works for. That's not five sequential UI steps; it's one operator-attention burst against one entity, and the UI should let the operator commit all of it in one save. The pattern: a `pulse` is the burst itself; a `pulse-dimension` is one independent editable concern within the burst (name, socials, emails, org); a `pulse-surface` is the parent that loads the entity, hosts its dimensions, collects them, and writes them as one observation batch. Dimensions can be nested (OrgPicker contains OrgCreate). Dimensions are reusable across pulse-surfaces (NameFields is the same in person-enrichment as it will be in org-enrichment). Each dimension can grow its own microservice when it earns one — matching the existing pack / surface pattern.
specs/Pulse-Pattern.md -
LinkedIn Network Explorer — slicing your own connection graph by geography for curated invites, when LinkedIn won't let you query it directly
A client is hosting a dinner in Manhattan and the operator wants to invite their LinkedIn contacts who actually live in NYC. LinkedIn's public API removed the connections endpoint years ago, their Terms of Service explicitly forbid scraping, and they ban accounts that get caught. So the question isn't 'how do I scrape LinkedIn' — it's 'given that LinkedIn is hostile to programmatic querying of your own network, which legitimate paths let you produce a geo-filtered slice of your connections in time for next week's dinner, and which of those compose with augment-it's existing pack-runner / record-set / response-reviewer stack so the same pattern works for the next client dinner and the one after that.' This exploration walks the four paths (data export + enrichment cascade, Sales Navigator subscription, third-party scraping services, direct careful scraping), names the legal/ban posture of each, and lands a recommendation that dogfoods augment-it — because the operator has literally built the tool for 'augment a list of contacts with metadata you don't have yet,' and this use case is the canonical instance of that pattern.
explorations/LinkedIn-Network-Explorer-For-Curated-Invites.md -
Best Way to RAG Over the Corpus — design space for retrieval-augmented operations on augment-it's per-client corpus, given the structured frontmatter we just earned
245 .md files now carry first-class `published_at`, `record_id`, `record_uuid`, `funder_slug`, `pack_id`, `tags`, `binary_asset.sha256`, and `extra_metadata.{language,description,content_length_bytes}`. That metadata is the differentiator — RAG over augment-it's corpus is not 'embed-and-cosine-search'; it's hybrid retrieval where the structured facets (date, funder, source, document type) do most of the filtering and dense embeddings handle the residual 'about-ness.' This doc walks the design space: vector store choice (local Chroma is the right starting point, given the wider Lossless tree's existing Chroma MCP and the `chroma-local` / `search-lossless-corpus` skills), chunking strategy (markdown H2-aware with overlap, lineage-stable doc IDs keyed by `record_uuid`), the per-funder collection vs single-with-filter trade-off, where the retrieval lives in the runtime (a `corpus.retrieve.requested` NATS capability mirroring the existing `corpus.list_for_record` shape), how the inbox composes (indexed separately under its triage discipline), and what the operator-facing surface looks like (cited answers in chat; retrieval-backed chips on the Sort & Filter Lens; an MCP server export so other tools in the tree can query the same corpus). A phased plan ends the doc — Phase 1 ingest to local Chroma + the retrieve capability; Phase 2 chat-surface citations and lens-side filter-by-retrieval; Phase 3 graduate to Chroma Cloud when multi-user reach matters or local resources become the bottleneck.
explorations/Best-Way-to-RAG-Over-the-Corpus.md -
Inbox Sort by Agent Tasks — moving the inbox from a flat 86-item pending queue into a task-typed work surface where the operator sees what's next and the agent does the safe parts automatically
The inbox today is a flat list — 86 .md files with `inbox_status: "pending"`, all rendered identically in the lens regardless of whether they're (a) a fresh capture that obviously belongs in `corpus/hewlett-foundation/` based on title alone, (b) a PDF the operator dropped that needs body extraction before it's useful, (c) an inbox file that's a near-duplicate of one already in an assigned funder dir, or (d) a low-signal scrape that should probably be discarded. The operator sits down at the lens, sees 86 items, and has to context-switch between four different task types as they scroll. Treating those as separate sortable buckets — each with its own affordance, its own agent-assist scope, and its own confidence band — turns the inbox from a backlog into a triage console. This doc maps the task taxonomy (TRIAGE, EXTRACT, ENRICH, DEDUPE, FLAG, DISCARD), what each task can be done by an agent vs requires a human, how to bake the suggested-task into the file's frontmatter at capture time (an agent-proposed `triage_suggestion:` block) so the lens has something to group by without recomputing every load, the confidence bands that gate auto-action vs human-confirm vs human-decides, and how this composes with the retrieval doc's idea of corpus-level semantic search. A phased plan ends with the simplest move: stamp `triage_suggestion:` at capture time using the title + URL + funder roster, group the lens by task type, and let agent-doable tasks ship a 'do it for me' button next to the operator-decides ones.
explorations/Inbox-Sort-by-Agent-Tasks.md -
Some records show empty corpus in the Sort & Filter Lens despite per-funder directories existing on disk — the lineage join is healthy but the workspace-service capability has no timeout override (defaults to 5000ms), the content-ingest handler processes requests serially, and each call walks every funder directory under clients/<id>/corpus/, so late requests in the 96-row fan-out time out and the lens swallows the error silently; the durable fix is to make corpus_funder_slug (a column the records sheet already populates) the primary join key, which limits each call to one small directory and dissolves the timeout race — this supersedes the originally-proposed corpus-overrides.yaml because the override surface is now the records-sheet cell
End of 2026-06-09 session: corpus content built for ~21 new records (warm 17 → 38 between v9 and v10). Operator saw four rows showing `corpus 0` despite per-funder directories on disk — sobrato-philanthropies, stand-together-trust, steve-and-alexandra-cohen-fnd, todd-fisher. UPDATED 2026-06-10 follow-on session: a hard-refresh cleanly resolved those four but exposed three more — hewlett-foundation (2 files on disk), howard-schultz-foundation (6), kellogg-foundation (6). A second backend probe confirmed `corpus.list_for_record` is returning the correct counts for those three too. The actual bug is in the wire: `corpus.list_for_record` has no `CAPABILITY_TIMEOUTS_MS` entry so it falls through to the default 5000ms, the content-ingest handler is a serial `for await` loop, and each call walks every funder directory. With 96 visible rows firing 96 parallel requests, late ones in the burst time out and the lens `catch` block swallows the error → chip never updates. The simpler, durable fix the operator proposed — join via `corpus_funder_slug`, a column the records sheet already populates per row — dissolves all three causes at once: each request now walks one ≤13-file directory instead of 301 files, the override surface is a sheet cell instead of a new YAML format, and lineage stays as a fallback for rows without a slug. The originally-proposed `corpus-overrides.yaml` mechanism is SUPERSEDED. Backfill of `record_uuid` into 201 unstamped files stands as independent hygiene (script built this session, dry-run found zero stale conflicts).
issues/Some-Records-Show-Empty-Corpus-Despite-Directories-on-Disk.md -
Operator-built flows beyond the universal pipeline — the default augmentation path is a dud for most edge cases, and the cheaper-than-microfrontend escape is a view-spec the agent-chat composes from natural language and the UI renders generically
Today's `augment-it` assumes a linear flow: fire packs against records, triage responses, save to corpus, repeat. That works for the records where SerpApi + Firecrawl + Jina hit cleanly — about 17 of 96 in the reach-edu working set. For the rest, the flow is a dud: the bottom ~25% are deliberately private (high-net-worth individuals, small foundations operating by reputation) and have no digital footprint to scrape; the middle ~60% have URLs and socials but our automated fan-out misses what a human eye catches in two minutes of search-engine browsing. Going to the client with content informed by 17 of 96 funders would look like we didn't really try. The fix is *not* a new microfrontend per scenario — there will always be a next scenario — but a *generic spec-renderer* the operator and the agent both compose against. Sort + filter + named views first, sequenced playbooks second, agent-generated view-specs third; the formal flow-editor that competes with n8n is the never-shipped fourth tier unless and until the prior three prove insufficient. The differentiator from n8n / Flowise isn't UX polish — it's that augment-it knows about *records as the implicit data spine*, which means a flow's verbs can pre-bind to a record subset and skip the data-plumbing primitives that make general-purpose flow builders feel like overkill.
explorations/Operator-Built-Flows-Beyond-The-Universal-Pipeline.md -
Augmentation-state preservation and snapshot promotion — the operator's CSV is the system of record, the filesystem is the truth, and `/promote-snapshot` is the verb that walks the corpus and emits the next CSV with system columns appended so flow-switches don't erase the prior cycle's work
v8 has been at rest in `inputs/` since 2026-06-05 while 22 corpus files landed across two new funders, 12 inbox captures piled up, one chat verb shipped, and zero of that progress is visible in the spine the operator hands to themselves a week from now. The fix is one new verb: `/promote-snapshot` reads the latest CSV in `inputs/`, walks `clients/<client>/corpus/` indexing markdown files by their `record_id` frontmatter, and emits `<date>_<basename>_v<N+1>.csv` with system columns appended — `corpus_count`, `corpus_funder_slug`, `corpus_last_updated`, `corpus_by_pack`. No new infrastructure between the filesystem and the CSV. No register, no write-hooks, no boot-time backfill — just a stateless join at the moment the operator chooses to advance. The CSV in `inputs/` is the system of record (both spine columns and system columns); the filesystem is the truth that system columns are *derived from*. A re-export from Google Sheets (which won't carry system columns) doesn't lose anything — the next `/promote-snapshot` re-derives them from filesystem and emits them back into the CSV. Ships in two phases: a `corpus_count` chip on Records Surface so the 17/96 coverage gap becomes visible in the view (Phase A); the promotion verb itself (Phase B).
plans/Augmentation-State-Preservation-and-Snapshot-Promotion.md -
In-App Browser vs Browser Plugin for Corpus Add — bridging the operator's own search into the per-record corpus without leaving the cockpit
The Content Reader now has a manual-URL field — paste a URL the operator found via their own Google search and it lands in the funder's corpus. That closes the immediate gap but leaves the friction of leaving Augment-It to do the search, finding the URL, then copying it back into the right card. This exploration looks at two ways to collapse that round-trip: (1) an in-app browser/search surface — embed a search experience inside Augment-It so the operator never context-switches; (2) a browser plugin — let the operator search wherever they normally do (Chrome, Safari, Arc) and post the active tab's URL into the active record's corpus with a single keystroke. Each path has real friction-cost / engineering-cost / security-cost trade-offs. The doc captures the trade-offs, the unknowns to resolve before committing, and a recommendation.
explorations/In-App-Browser-Or-Plugin-For-Corpus-Add.md -
Funder Content Corpus Workflow — what the system has to do, ranked by quality bar, with no implementation prescribed
Tonight's session went sideways because the implementation got ahead of an explicit shared statement of goals. This spec captures the goals — what the operator wants the funder-content augmentation workflow to actually produce, in what shape, with what quality bar — without prescribing how. Any future implementation choices (refactoring the pack, evolving Content Reader, swapping connectors, adding curation surfaces) must measure themselves against these goals. The deeper failure mode tonight was a class of fixes that filtered yesterday's bad data tighter at display time instead of producing today's good data via a fresh fire; the goals here are written so a future agent can resist that pull. Treat the prior specs ([[Response-Reviewer-Shell-and-Content-Reader-Mode]], [[Flow-for-Bundles-Packs]], [[Entity-Pulse-Bundle]]) as compatible siblings — this spec sits at the level of 'what we want,' those describe pieces of the 'how.'
specs/Funder-Content-Corpus-Workflow.md -
Per-Client Privacy and the Path Off Local — when does single-operator-local-only stop scaling, what stack do we reach for, and how do we architect today so the move is cheap when it comes
Two forcing functions converged in the same week. (1) The funder-content corpus the operator wants to build for reach-edu — Jina-pulled markdown from each funder's blog / press / RSS — must be private per client; reach-edu's corpus and Laerdal's would share little, and both treat the material as highly sensitive. (2) Across all ai-labs projects, the single-operator-on-localhost posture is bumping up against the seam where typical SaaS concerns (auth, workspaces, per-client isolation, admin controls) would normally live. An active collaborator is joining; a client wants login soon. The exploration's job is NOT to commit to a stack now — the operator's instinct that 'we're not quite there in terms of actually needing it, maybe in a few weeks' is the right call — but to (a) map the option space across repo topology, storage substrate, identity, and multi-tenant data model, (b) identify which architecture choices made TODAY (about the funder corpus, the augment-it record store, the chroma collections) preserve cheap optionality for the move off local, and which lock us in, (c) name the decision-forcing functions that would flip 'not yet' to 'now'. Anchor reference: the dididecks-ai client-private-repos pattern (calmstorm-decks et al.). Candidate stacks include all-local-private-repos, Railway-Postgres-per-client (single-tenant), Railway-Postgres-multi-tenant with auth, hybrid markdown-in-repos + Chroma-for-retrieval, and managed BaaS (Powabase.ai surveyed, flagged expensive). The exploration ends with a recommended posture, not a decision.
explorations/Per-Client-Privacy-and-the-Path-Off-Local.md -
Funder Corpus First Session Failed — 75 markdown files across 15 of 96 funders, 81 records unprocessable, hours spent layering filters on stale data instead of producing clean fresh data, rebuild against the goals spec exists in code but was never validated against a real pack fire because the session ended
After a multi-hour session on 2026-06-05 building toward the per-client funder content corpus for reach-edu, the operator stopped because the workflow was unworkable. Final state: 75 corpus markdown files written to `clients/reach-edu/corpus/` across 15 funders (Annie E. Casey, Arnold Ventures, Arthur Blank Foundation, Ascendium Education, Ballmer Group II, Bridgespan, Carnegie Corporation, Charles and Lynn Schusterman, Charles Koch Foundation, Daniels Fund, ECMC-2, Education First, Gitlab Foundation, Greater Texas Foundation, Heising-Simons Foundation). 81 of 96 funder records have zero corpus content. The operator's stated framing: 'I was only able to process like 1/3 of the plausible records' and 'this is all fucking bullshit, nothing is working the way it should.' This issue captures what failed so morning-self has a target list and doesn't repeat the failure modes.
issues/Funder-Corpus-First-Session-Failed-Most-Records-Unprocessable.md -
OfficialPulse URLs Appear as Junk in Promoted Versions — operator believes promote v6 → v7 → v8 wrote bad data into the array column; audit shows promote is clean and v6 itself already contained every URL
The operator reports that v7 and v8 of the Master-Pipeline-Tracker carry 'junk' OfficialPulse URLs (news / blog / stories / grants / press indices) that weren't in v6, and proposes a recovery of (a) hand-fixing the v6 → v7 export, (b) deleting v8, (c) hardening the next promote so it doesn't recur. The audit inverts that framing: v5, v6, v7, and v8 all carry IDENTICAL `official_updates_index_urls` arrays — 122 URLs across 57 rows, zero per-row diffs across any consecutive pair. The promote is doing exactly what the 'All data continues' invariant from [[Original-and-Enhanced-Record-Instances]] requires. What the operator is *seeing* for the first time is the JSON content of an array column that used to render as a blank box in Record Collector — today's `apps/record-collector/src/logic/format.ts` formatter surfaced it. The operator's claim 'I had approved the proper links' is consistent with the pick-path code (`RecordRow.svelte:63 pick()` appends one URL at a time, no silent bulk-write), but multiple records-surface sessions accumulated to 122 URLs and the cumulative result is what's now legible. The real gap is a curation surface — Record Collector's structured-value branch is read-only; there is no per-URL remove affordance anywhere in the UI that operates on the canonical column. This issue closes the data question and reframes the next step as adding that affordance, plus a pre-promote audit step in PromoteBar.
issues/OfficialPulse-URLs-Appear-as-Junk-in-Promoted-Versions.md -
URL Auto-Detector and Clickable Rendering for List Fields — make socials, helpful_links, and official_updates_index_urls open-in-tab links instead of opaque JSON
Three of the most operationally important Augment-It fields are list-shaped — `socials`, `helpful_links`, `official_updates_index_urls`. Each is either a `string[]` or an `Array<{ url: string, ...metadata }>`. Today's field renderer (shipped earlier today in commit `2004770`) stringifies them as JSON, which is legible but not actionable — the operator can't click through to verify the link works, and the secondary metadata (display_name, confidence, label, note) clutters the visual scan. This plan adds a shape-detecting URL extractor (`formatFieldValue` becomes pluggable) and renders any field whose value is a URL — scalar string, array of strings, or array of objects with a `url` key — as a list of clickable `<a target="_blank" rel="noopener">` links, one per URL, with the auxiliary metadata dropped from the rendered view. The forcing function is the next bundle's hard dependency: it fires only against rows whose `socials`, `helpful_links`, and `official_updates_index_urls` already carry ≥1 URL, so the operator must be able to skim Record Collector and visually confirm 'yes there's a link here, and yes it's the right one' fast. Closes the audit side of [[OfficialPulse-URLs-Appear-as-Junk-in-Promoted-Versions]] — the curation/remove side stays as a sibling follow-up.
plans/URL-Auto-Detector-and-Clickable-Rendering-for-List-Fields.md -
Record-Set Family Grouping — internal lineage vs. external-variant families in the Record Collector sidebar
The Record Collector sidebar lists every record set as a peer, which makes a tracker uploaded as v4 / v5 / v6 / v7 / v8 look like five unrelated CSVs and an in-app promotion chain look the same as a fresh upload. Two distinct family signals deserve first-class representation: the **internal-lineage family** (already in the data model via `promoted_from`) and the **external-variant family** (not modeled — separate uploads the user explicitly groups, or whose filenames share a stem). This spec defines the field, the grouping mechanism, the sidebar rendering, and the interaction with [[Enhanced-Records-List-and-Promotion-Checkpoint]] and the new two-CTA `Augment this Set` panel.
specs/Record-Set-Family-Grouping.md -
Response Reviewer Shell and Content-Reader Mode — Response Reviewer becomes a wrapper whose inner review UI swaps based on what the bundle that fired actually produced
Response Reviewer was built to answer one question, well: 'is this URL the right one?' That's the right question for socials packs (linkedin, x, wikipedia, bluesky) — the candidate is a single URL, the action is accept-or-reject. It's the wrong question for content-shaped packs (official-blog, official-pressrelease, official-social-posts, future YouTube / podcast / RSS packs). The unit of work there is an *article* the operator wants to *read*, not a URL to triage — and the recently-shipped audit (1,109 OfficialPulse responses, 3 accepts, 99.7% reject rate) is what that mismatch looks like at scale. This spec splits Response Reviewer into a **shell** (entity selector, pack-filter chips, navigation, response-store connection) and a swappable **review mode** mounted inside the shell. The bundle that fired the responses declares which mode it pairs with — `profile-builder` → `candidate-triage` (today's UI), `entity-pulse` → `content-reader` (new). The content-reader's job is to show the operator what was found and let them include / exclude items from a downstream Jina ingest queue, not to accept individual URLs into row columns. First slice ships the shell pattern + the content-reader mode for `official-blog-pack` + `official-pressrelease-pack` against funder blog / press / RSS sources — articles only, no video / no social posts yet, expanding to those modes in follow-up. Composes with [[Per-Client-Privacy-and-the-Path-Off-Local]] (the Jina-ingested content lands in `clients/reach-edu/corpus/`), [[OfficialPulse-URLs-Appear-as-Junk-in-Promoted-Versions]] (this is the audit's prescribed replacement for per-URL triage on the OfficialPulse packs), and [[Packs-and-Bundles-Pattern]] (the bundle definition grows a `review_mode` field). Treats [[Response-Reviewer-and-Response-Store]] as the prior art whose shell scaffolding gets refactored, not replaced.
specs/Response-Reviewer-Shell-and-Content-Reader-Mode.md -
In-App Chat v0.0.1 for Augment-It — The Prompt-Drafting Triad as the Demo Affordance
Revised. The v0.0.1 demo arc is the gated-enhancement pattern made conversational: the user states a goal, the chat drafts a prompt (`prompts.draft`), refines it across one or two turns (`prompts.improve`), then explicitly binds it to records (`prompts.apply`) — a ScriptCapability with postconditions that actually checks whether the enrichment did what the prompt promised. Plus `records.list` to look at the result. Four capabilities total, all per-app; two adapter shapes exercised (TS handler, ScriptCapability). McpCapability and SkillCapability honestly deferred to v0.0.2 — no corpus exists yet for `corpus.search` to query, and no skill is wrapped yet. The blueprint's full Pattern 1 isn't proven by v0.0.1; the gated-enhancement triad is. That's the right trade for a client-meeting demo on fundraising-pipeline development.
plans/In-App-Chat-v0-0-1-for-Augment-It.md -
Pickup notes — 2026-06-03
Late-night session that ended in an actually-working per-record augmentation surface. Records Surface at :3011 wired into the Flow at step 3, three connectors (Firecrawl scan, Firecrawl + Haiku agent, SerpApi), inline edit on name + URL, multi-URL accept (array column), promote-to-next-version save bar at top + bottom with post-promote navigation to Enhanced Records / Augment / stay. User ran the loop end-to-end on the 96-row pipeline tracker — promoted v5 → v6 successfully. Also: backup of v5 work pulled to .backups/ (98 URLs in 45 rows safe on host fs), Record Collector decomposed into RecordSetsList + RecordSetCard components with descending-by-created_at sort + per-card CSV download, and a deep audit of v3 → v4 → v5 that exonerated promote (it works) and named the actual data-persistence failure mode (URL edits routed to helpful_links instead of url). Three new context-v docs land the lessons. Branch is feat/bundle-media-packs, last commit pushed is 7e449db (Records Surface initial), HEAD has uncommitted improvements + new specs.
reminders/Pickup-2026-06-03.md -
Augment Transformations Not Reliably Persisting — Hand-Curated Field Edits and Whole-Row Augmentations Are Disappearing Across Record-Set Versions
Two failures observed in the same 2026-06-02 session, escalating from immediate to systemic. (Immediate) The user just hand-curated 98 OfficialUpdate URLs across 45 records on the new Records Surface — there is no save / promote affordance in that UI, so the only thing keeping those acceptances alive is the row-store's auto-persisted JSON on disk. A backup has been pulled to `.backups/2026-06-02_records-surface-acceptances/` against accidental data loss. (Systemic) The active record set v5 is missing the homepage-URL edits the user made in a prior v3→v4 augment pass — those edits ARE in the row-store's earlier record sets but did not carry forward through promote. The product's whole value premise is 'augment a record set, promote it to the next version, and your work survives' — that is currently not true for some field categories.
issues/Augment-Transformations-Not-Reliably-Persisting.md -
Troubleshooting UI for Official Blogs — The Bundle Fire Path Doesn't Fit the Flow That Was Built for Prompt Templates
Entity Pulse Phase-1 bundles (entity-blog, entity-officials) are now selectable in the Augment remote and fire end-to-end against real rows — but the Flow that wraps Augment was built around prompt-template fires, not bundle fires, and at every step downstream of step 2 the user hits a surface that makes no sense for what they just did. Request Reviewer (step 3) has no preview of what's about to be sent for a bundle fire; the navigation to Response Reviewer is blocked behind it; Response Reviewer (step 4) only renders responses after they exist; and the per-record fire affordance lives in Response Reviewer instead of in Augment where it should be visible from step 2. Plus a NATS payload-limit crash that ate the first fire's responses. The chip palette pattern is sound; what's broken is the flow's assumption that everything routes through a prompt template, and the gap between the bundle picker and the per-row fire surface.
issues/Troubleshooting-UI-for-Official-Blogs.md -
Pickup notes — 2026-06-02
Today's session closed the Shell UX Coherence refactor's last threads (Tooltip-System sharpened to a family + Walkthrough, bundle picker dropdown, tag v3.0.0.3 cut and pushed) and then went deep on a NEW bundle: **Entity Pulse**. By session end, four interlocking specs cover the bundle's design — Entity-Pulse-Bundle itself (foundation-first 4-phase DAG with three categories, seven source-bound packs, three rollup-agents), Pulse-Curation-Layer-and-UI (three layers raw/curated/finalized + four triage actions), Connector-Inventory-and-Per-Record-Palette (registry + per-record per-intent button palette), plus the prior Tooltip-System for the chip menus. Nothing implemented past the existing Phase 0-6 UX refactor; all four new specs are Draft. Migration plans cross-reference each other; foundation-first sequencing means OfficialUpdates ships first, gates the rest. The user said start fresh; this is your map.
reminders/Pickup-2026-06-02.md -
Record Count Stays Stable Across Versions — Augmenting Adds Columns, Never Rows
1 dataset = 1 row count. Forever. From ingest through every promote, every augment, every triage. If the user has 96 records, every surface that says a number should say 96. Adding properties + values to records becomes new COLUMNS on those records, not new rows in the store. Discovering 231 rows in the row-store for what the user knows is a 96-record dataset is a symptom — of either ghost data from earlier record sets, version-multiplication of the same 96 records across v3/v4/v5, or a leak in the ingest/promote path. Either way: the user never wants to see a number other than their dataset's record count, and the architecture must reflect that.
reminders/Record-Count-Stays-Stable-Across-Versions.md -
Connector Inventory & Per-Record Palette — Hot-Swap Providers, Re-Fire One Record at a Time
Today's connectors are hardcoded into a small ProviderId union and bound to specific packs at compile time. The reality of LLM web research is that providers churn — new ones launch, old ones rate-limit, costs shift, a specific entity needs a specific connector to crack a stubborn search. The system needs to (a) accept any connector at runtime via a registry that resolves by *capability* not by hardcoded id, and (b) give the human, at triage time, a per-record palette of short-labeled buttons — click `f` to re-fire just this record through the next Facebook connector in priority order, or long-press to pick a specific one. The killer UX from prior live attempts: per-row, per-intent, per-connector, one click. This spec scopes the registry, the pack-intent declarations, the bundle-level chain config, the per-record palette, and the integration with the Pulse Curation Layer.
specs/Connector-Inventory-and-Per-Record-Palette.md -
Per-Record Iteration as the Primary Surface for Pack and Bundle Fires — The Flow Rearranges Per Fire Type
Pack and bundle fires deserve a fundamentally different primary surface than prompt-template fires deserve. For prompt templates the existing Augment → Request Reviewer → Response Reviewer → Promote sequence works, and the Response Reviewer for socials eventually became lovely. For pack/bundle fires that sequence is wrong from step 2 forward: the Request Reviewer surface is empty, Response Reviewer mixes the current fire's results with every prior fire's results, and bulk fan-out across 96 rows wastes time and credits when the connector chain fails 96 ways before it ever works once. The right primary surface is a **per-record list scoped to the active pack/bundle**, where each row shows only the relevant/visible fields, and a connector palette runs in-place with results landing inline on the row. Bulk fan-out becomes the *secondary* mode, available only after the user has validated a chain on 4–8 records by hand. The Flow chrome adapts to the fire type — same step numbering, different active members per step. This spec describes both the new remote and the Flow rearrangement.
specs/Per-Record-Iteration-as-Primary-Surface-for-Pack-Fires.md -
Pulse Curation Layer & UI — Three Layers per Category, Triage Per Item, Finalize on Demand
Pulse-shaped bundles (Entity Pulse and its siblings) produce multi-item structured rollups that the human triages item-by-item. The data model needs three layers per category — an immutable `raw_output` from the LLM fan-out (audit trail), a live `curated_output` that updates as the user accepts to canonical, accepts to additional context, or discards each item, and an immutable `finalized_output` snapshot taken when the user marks the triage done. Re-firing a bundle later creates new raw + curated layers; the previous finalized is sticky. This spec codifies the three-layer pattern, the triage actions, the row schema, and the UI shape — the layer the Response Reviewer (per Decision §10) renders for pulse-shaped responses.
specs/Pulse-Curation-Layer-and-UI.md -
Augment-It as Working App and Architecture Demonstration
Augment-it lives two lives at once — a working product that augments CRM-style record sets, and a living showcase of microservices + microfrontend + API-first architecture. This blueprint names the dual identity, draws out the tensions it creates, and codifies the discipline of evaluating every architectural and UX decision under both lenses so neither identity quietly wins.
blueprints/Augment-It-as-Working-App-and-Architecture-Demo.md -
Auth Patterns — Following Astro Knots Conventions in a Rsbuild + Module-Federation Shell
Augment-it isn't a pure Astro site — the shell is Rsbuild + Svelte + Module Federation, and the backend is NATS-fronted microservices with a workspace-service holding session tokens. But the Astro Knots auth conventions (session cookie, middleware gate, public allowlist, never-prerender-a-gated-route) still encode the right discipline. This blueprint translates each rule into the augment-it architecture so the audit-trail and the failure modes stay legible across the two stacks.
blueprints/Auth-Patterns-following-Astro-Knots-Patterns.md -
Pickup notes — 2026-06-01
Today's session pivoted from reactive demo-prep patching into spec work. The user named the pattern — affordances that hide, die, mismatch, or misname — and asked us to stop patching and develop a spec. We did. The whole-shell UX-coherence spec is now Draft with 8 locked decisions, 12 evidence items, 3 confirmed failure shapes + 1 emerging, 4 surfaces audited (Pack Runner, PTM, Record Collector, Shell), 3 open architectural questions, and a 'wish list' that already spawned four sibling context-v stubs (two specs, two blueprints). Nothing was implemented past the live demo-prep patches; everything else is held at the sign-off gate. The user explicitly said: don't start implementation before sign-off.
reminders/Pickup-2026-06-01.md -
API-First In-App Documentation — Each Surface Reveals Its Own Docs Inline
Every remote, the shell, and every service ships its documentation inside itself — toggled by a small icon-CTA, revealed inline within the surface rather than in a separate tab. Not generic API docs but relevant ones: the data flowing in, the services called with which payloads, the response shapes, the diagrams. Because augment-it is also a demonstration of API-first architecture, the docs are part of the product, not adjacent to it.
specs/API-First-In-App-Documentation.md -
Initial User Experience — From Landing to a Productive First Action
What does the first thirty seconds of augment-it feel like? This spec covers the surface a brand-new user lands on, the lightweight onboarding that gets them to a productive first action without lecturing, and the seams where the working-app and architecture-demonstration identities first meet the visitor. Designed to be skipped by returning users, never re-shown unnecessarily, and never required to dismiss to do work.
specs/Initial-User-Experience.md -
Pickup notes — 2026-05-27
Where we left off the night of 2026-05-26: the two-day packs-and-bundles arc closed cleanly. The structured-output extension is shipped, the social-search microservice is in the stack, pack-runner is live at :3009 paired with prompt-template-manager, the response-reviewer (:3005) by-record triage cockpit is in a good place with inline URL / display_name / entity-name editing + stale-companion-field discipline in the store, and the Packs-and-Bundles-Pattern blueprint absorbed eleven emergent UX requirements from the foundation-dataset smoke. Three docs got written tonight that name the next several arcs without committing to which one fires first: the Run-as-First-Class-Operation plan (Parts 2–6 sequenced, only Part 1 shipped), the Search-Providers-as-First-Class issue (filed, reframed 2026-05-27 from a Tavily→SearXNG swap to a provider-plurality architectural concern with SearXNG joining as a peer + new default for social packs, Tavily staying as a peer for content-RAG packs, and per-row provider iteration named as the workflow we're building toward), and a new Agent-Chat-Skills-and-Commands-Candidates exploration that lists ~20 verbs the chat could route to but currently can't. Plus the README finally got rewritten to match reality (Svelte 5, not React+Next.js). These are the threads to pick up — roughly in priority order — for tomorrow.
reminders/Pickup-2026-05-27.md -
Response–Row Identity Across Promote — Why Responses Outlive Their Rows, and the `record_uuid`-on-Response Fix
Responses live in response-store. Rows live in row-store. When `record_set.promote` folds a parent set into a canonical, the **parent rows are deleted and new canonical rows are minted with fresh row_ids** — but the old responses survive untouched, still pointing at row_ids that no longer exist. Today there's no link from those orphaned responses back to the canonical row that inherited their accepted value, because the stable cross-derivation identity (`record_uuid`) lives only on rows, not on responses. The fix is small and additive: carry `record_uuid` on the ResponseRecord at create time, and the by-record view can resolve orphans by identity instead of by dead row_id.
blueprints/Response-Row-Identity-Across-Promote.md -
Agent-Chat Skills and Commands — Candidates List
The in-app chat surface (apps/chat) is augment-it's verb-routing layer — the place a user states a goal in prose and a capability handler executes it. Today's roster is small and prompt-focused: `prompts.draft`, `prompts.improve`, `prompts.apply`, `records.list`. The product needs many more verbs to be useful, and several scripts that already exist under `scripts/` and `services/*/scripts/` are the natural first candidates to graduate from shell-only into chat-callable capabilities. This doc maintains the running list of candidates — what they do, what shape they need to take (TS handler / ScriptCapability / McpCapability / SkillCapability), what gating they require (destructive vs read-only, scope-aware vs global), and what the chat-side phrasing should look like. Treated as a living roster — the next session adds entries as they get nominated; promotion out of this doc happens when a candidate becomes a spec or lands in `packages/workspace/src/capabilities/`.
explorations/Agent-Chat-Skills-and-Commands-Candidates.md -
Augment-It Prior Art Survey — What's Already Been Built, and What It Tells Us
Before we rewrite Augment-It on the new stack, we owe ourselves a clear-eyed look at what's already been built. Two parallel attempts exist: Tanuj's split-into-microfrontends approach across three Next.js / Vite repos (record-collector, prompt-manager, request-reviewer — the only one that actually got Module Federation working) and an earlier monolith by Michael on the archive/bolt-code branch that covers more pipeline stages with multi-provider LLM handling and Supabase auth. Both capture most of the core functionality. Neither is what we'll ship. This survey is the map.
explorations/Augment-It-Prior-Art-Survey.md -
Bolt-Era API Provider Widget Analysis
Lifted from `augment-it-bolt/specs/APIProviderWidget-Analysis.md`. Per-feature breakdown of the bolt monolith's API provider configuration widget — the surface that let users choose between Claude, GPT, and Perplexity per prompt section, with per-call options. The widget itself won't survive the rewrite verbatim, but the multi-provider configuration *shape* is the right starting point for the rewrite's model-routing UI.
explorations/Bolt-API-Provider-Widget-Analysis.md -
Bolt-Era Codebase Analysis
Lifted from `augment-it-bolt/specs/Bolt-Codebase-Analysis.md` (the archive/bolt-code branch of lossless-group/augment-it). A comprehensive architectural analysis of the bolt monolith — React + TS + Vite + Supabase + zustand. Stale relative to the codebase we're rewriting toward, but a faithful map of the prior state and worth keeping as a reference for what the entity model and component graph looked like when it was working.
explorations/Bolt-Codebase-Analysis.md -
Bolt-Era Highlight Collector Analysis
Lifted from `augment-it-bolt/specs/HighlightCollector-Analysis.md`. Per-feature breakdown of the highlight-collector module — the pipeline stage where users mark up LLM responses with section_title + color spans and persist them. One of the two stages that never got split into Tanuj's microfrontend repos, which means this document is the only existing description of how that stage works. Load-bearing reference for the rewrite.
explorations/Bolt-Highlight-Collector-Analysis.md -
Bolt-Era Main Container UI Analysis
Lifted from `augment-it-bolt/specs/MainContainerUI-Analysis.md`. The longest of the bolt-era analyses (~750 lines). Describes the app shell, authentication gate, routing, and layout structure of the bolt monolith. Most directly relevant to the rewrite's shell decision — does augment-it have one host shell (with mounted microfrontends), or is each app its own host?
explorations/Bolt-Main-Container-UI-Analysis.md -
Bolt Monolith As Built — The archive/bolt-code Branch
The earliest working version of Augment-It is a Vite + React + TypeScript monolith on the archive/bolt-code branch of lossless-group/augment-it, built (probably with Bolt.new, hence the branch name) by Michael before Tanuj split things into microfrontends. It is feature-richer than any of the federated repos — it covers five of the six pipeline stages, has multi-provider LLM response handling, Supabase auth, and Tanuj's own per-feature analysis specs already sitting in a specs/ folder. It is also a monolith and uses an auth substrate we won't keep. This doc captures what's there so the rewrite can lift the ideas and discard the architecture.
explorations/Bolt-Monolith-As-Built.md -
Bolt-Era Prompt Section Analysis
Lifted from `augment-it-bolt/specs/PromptSection-Analysis.md`. The shortest of the bolt-era analyses (~200 lines). Describes the editable+previewable prompt section feature — prompt templates as MDX-rich, variable-aware, edit-toggle-preview blocks. The pattern that the rewrite's prompt-template-manager microfrontend should likely adopt.
explorations/Bolt-Prompt-Section-Analysis.md -
Bolt-Era Record Collector Analysis
Lifted from `augment-it-bolt/specs/RecordCollector-Analysis.md`. Per-feature breakdown of the record-collector module in the bolt monolith. Worth cross-referencing against `Tanuj-Record-Collector-As-Built.md` — Tanuj later forked record-collector into its own Next.js repo, and the differences between this bolt-era version and Tanuj's split version are instructive about which patterns survived the federation experiment.
explorations/Bolt-Record-Collector-Analysis.md -
Entity-Profile Augmentation Workflow — Common Social + Vertical-Specific Sources, Per Entity Type
A common workflow in augment-it is filling in 'who is this' and 'where are they on the web' for every row in a dataset — LinkedIn, X, BlueSky, YouTube for everyone, plus type-specific sources (ProPublica Nonprofit Explorer + Candid for philanthropic orgs, SEC EDGAR for public companies, Crunchbase for startups, etc.). Today this work happens prompt-by-prompt, one column at a time. This doc converges on a two-tier abstraction: **packs** as atomic, source-bound microfrontend+microservice units (one per data source), and **bundles** as workflow-shaped compositions of packs (a `profile-builder` for philanthropic orgs vs for VC firms). Verification rides the existing Response Reviewer surface with a structured-output extension.
explorations/Entity-Profile-Augmentation-Workflow.md -
Federation and Bundler Decision — Bun + Rsbuild + Module Federation, Workspace State, Optional Chat
The single architectural decision the augment-it rewrite has been gated on. We federate. The bundler is rsbuild (not Vite). The workspace orchestrator is bun (not turbo). State of truth lives in @augment-it/workspace — a per-app package following the shared workspace conventions — not inside the chat package. The @lossless/in-app-agent chat surface is mounted as one consumer of that workspace through a typed WorkspaceAdapter; non-chat consumers (Window microfrontends, headless workflow scripts) consume the workspace directly. Tanuj's federation experiment proved Module Federation works but exposed a smoking gun around shared state; the singleton-module idiom on @augment-it/workspace dissolves that gun, because every consumer reads from the same instance.
explorations/Federation-and-Bundler-Decision.md -
Tanuj's Prompt-Manager As Built
The scaffolding repo. Next.js 15 + React 19 + JavaScript, with a full CRUD-shaped UI for prompts (cards, search, statistics, create/edit modals, import/export) — but no store, no real data flow, and a `samplePrompts` array hardcoded inline. Honest about what it is: the right shape, none of the wiring. Worth keeping the schema, throwing away the implementation.
explorations/Tanuj-Prompt-Manager-As-Built.md -
Tanuj's Record-Collector As Built
The most-finished of the three microfrontend repos Tanuj split out. A standalone Next.js 15 app with a working ingest → configure → augment → export flow, a zustand-with-persist store, Perplexity-only LLM substrate, and one genuinely clever idea — the prompt template auto-generates from whatever columns the imported CSV has. Not the architecture we're keeping, but the field-aware prompt-generation idea is.
explorations/Tanuj-Record-Collector-As-Built.md -
Tanuj's Request-Reviewer As Built — The Module Federation Proof
The smallest of the four sources, and architecturally the most important. Vite + React 19 + Module Federation. The only place Tanuj actually got cross-app code sharing to work — a federated `RecordCard` component imported from `@module-federation-vite/ui`. The augmentation logic, however, is duplicated from record-collector by copy-paste, which exposes the seam that the federation experiment didn't resolve.
explorations/Tanuj-Request-Reviewer-As-Built.md -
Augment-It Workspace — Walking Skeleton Plan
First buildable plan for the augment-it rewrite. Scaffold @augment-it/workspace (Svelte 5 singleton, per the pre-flight spec) plus a thin Workspace Service container (Node/Fastify) plus one domain microservice (row-store) plus a NATS message bus. Browser ↔ Workspace Service is WebSocket; Workspace Service ↔ domain services is NATS pub/sub. Two spreadsheets become the proof-of-life payload: load → row appears in workspace state → invoke a capability → round-trip the change back through SSE-equivalent broadcast. Supersedes the Transport decision in [[Walking-Skeleton-Pre-Flight-Decisions]]; the demo audience (a 26-product client) is the reason.
plans/Augment-It-Workspace-Walking-Skeleton.md -
Impose the Three-Mode Theme System on augment-it
augment-it adopts the Lossless theme religion — the two-tier token system and the light/dark/vibrant three-mode contract from the Astro Knots blueprint — adapted for a non-Astro, non-Tailwind, federated multi-remote app. A shared packages/theme holds one theme.css (named tokens → semantic tokens, three mode blocks) and one SSR-safe mode-switcher; the shell renders a 3-mode toggle in its chrome; every hardcoded hex across the shell and the two remotes is replaced with a semantic var(). The structure is imposed in this work; the user then iterates the actual colours at the named-token tier without touching component code — which is the entire point of the two-tier system.
plans/Impose-Theme-Modes-System.md -
Prompt-Template-Manager — Walking Skeleton Plan
The second federated app for augment-it: a place to author prompt templates with {{column}} placeholders and run them per-row against a record set, producing a derived record set with the LLM's output as a new column. Two new microservices land — prompt-store (template CRUD, JSON-backed, same shape as row-store) and prompt-runner (the only container that calls the Anthropic API). The proof-of-life is the url-enrichment prompt: the pipeline-tracker CSV has no url column, so the first useful prompt is 'given the organisation name, find its URL' — and its output becomes the url column the next prompt needs.
plans/Prompt-Template-Manager-Walking-Skeleton.md -
Run-as-First-Class-Operation — Pair Pack-Runner with Prompt-Template-Manager, Make Runs Legible Across the Pipeline
Two coupled fixes that came out of the 2026-05-25 smoke against the foundation dataset. **First**, pair the Pack Runner remote with Prompt-Template-Manager in co-existence mode — they are the two ways to enrich a record set (custom LLM prompt vs source-bound pack), so they belong in one viewport with a draggable seam. **Second**, lift `Run` from a string id buried on each ResponseRecord into a first-class entity in response-store, so Response Reviewer (and Pack Runner, and every future surface) can see what batch of work produced the responses it's looking at — what prompt or packs fired, against which rows, with what aggregates, when. The pair is a one-line PAIRINGS entry. The Run lift is a small new service surface plus four UI touches; it pays for itself the moment a bundle wants live progress without inventing new infrastructure.
plans/Run-as-First-Class-Operation.md -
Common-Six Social Packs — First Real Packs on the Structured-Output Surface
Six pack identities (linkedin, x, bluesky, youtube, facebook, wikipedia) registered against one consolidated backend service that routes by pack_id, with Tavily as the underlying search and URL-shape verification driving the confidence score. No new microfrontend per pack — Response Reviewer's generic candidate card already renders every pack response. A small new Pack Runner remote provides the per-row × per-pack fan-out affordance so the foundation dataset can be augmented and reviewed today, before the bundle abstraction lands in a later session.
prompts/Common-Six-Social-Packs.md -
Helpful Links on Records — Captured During Response-Reviewer Triage
While a human-in-the-loop is triaging LLM responses in Response Reviewer — google-searching the unclear ones, fixing wrong URLs, deciding whether an org even exists — they routinely stumble onto adjacent links worth keeping with the record (a foundation page, a personal LinkedIn, a press release, a related grantee site). Today those links die in the human's clipboard. This prompt scopes a `helpful_links` array field per row, attachable inline from Response Reviewer with one click, surviving across record-set derivations so the next enrichment round can read them.
prompts/Helpful-Links-on-Records-Captured-During-Triage.md -
Response Reviewer — Structured-Output Extension (Packs-and-Bundles Foundation)
Extend the shipped response-store schema and the shipped Response Reviewer remote to support pack-shaped responses — structured candidates with confidence-band pills, a five-value outcome enum, and a sibling-payload + archival-markdown shape — without breaking the free-form text responses that today's prompt-runs produce. Zero packs ship in this work. Zero bundles ship. The deliverable is the surface that every pack will land on, exercised by a small fixture of mock pack responses so the renderer can be felt in all three theme modes before any real pack exists.
prompts/Response-Reviewer-Structured-Output-Extension.md -
Run /speckit-specify — Response Reviewer Structured-Output Extension (Packs-and-Bundles Feature 1)
The first Spec-Kit feature in the packs-and-bundles series. Extends the shipped response-store schema with sibling-payload structured output, the five-value outcome enum, archival markdown, and the pack/bundle correlation fields — and extends the shipped Response Reviewer remote to render the structured payload as a candidate card with a confidence pill. Zero packs are implemented in this feature. Zero bundles are implemented. The work is the surface that every pack will land on; the next three features (linkedin-pack, profile-builder.common bundle, then two-pass + entity-typed bundles) ride this foundation.
prompts/Run-Speckit-Specify-Response-Reviewer-Structured-Output.md -
context-v for augment-it
Living documentation for augment-it — specs, habits, prompts, reminders, explorations, issues.
README.md -
Pickup notes — 2026-05-23
Where we left off the night of 2026-05-22: the four-stage enrichment pipeline (Prompt Templates → Request Reviewer → fire → Response Reviewer) has all four remotes built with working UIs, but nothing has been run end to end. These are the threads to pick up — roughly in priority order — as seeds for tomorrow's prompts.
reminders/Pickup-2026-05-23.md -
Pickup — Build the Enhanced Records List + Promotion Checkpoint
Next session opens with the full spec already in hand: enhanced-records-list, a record-grained checkpoint surface that snapshots the whole triage state per record_uuid into a new canonical record set on promotion. This pickup points at that spec, summarizes the uncommitted-but-working state from the 2026-05-22 session (Save/Apply on Prompt Templates, autosave on response edits, helpful_links on rows, runner observability/cancel, response triage state ergonomics, the needs-human flag, blank-row cleanup), and queues the concrete first build step: the record_uuid plumbing + backfill.
reminders/Pickup-Enhanced-Records-List-Build.md -
Enhanced Records List — the Triage Checkpoint and the Promotion Loop
A new microfrontend that gives the human the first view of the whole enrichment outcome at once — a sortable list of every record across the parent set + its derived sets, deduplicated by a stable record identity, with each record's current triage state, edits, and helpful_links surfaced inline. From that surface the human selects records (typically all accepted + all good) and promotes them: those selected versions become the canonical record set, the predecessors archive, the same record identity carries forward. The next enrichment prompt fires against the canonical set, and the loop continues. The end-game is rich CRM-grade donor / grantmaker profiles built through repeated tight loops of LLM enrichment + human checkpointing.
specs/Enhanced-Records-List-and-Promotion-Checkpoint.md -
Request Reviewer — the Pre-Flight Surface
Before a prompt fires, you should be able to see exactly what is about to leave the building. request-reviewer is the augment-it stage that shows the resolved request — the prompt template with every {{token}} replaced by a real row's property value — lets you pick which model it goes to, optionally shows the literal JSON request body, and then fires it. The hard part is not the UI; it is guaranteeing the request you reviewed is byte-identical to the request that sends. That guarantee is the spec.
specs/Request-Reviewer-Pre-Flight-Surface.md -
Response Reviewer and Response Store — the Post-Flight Surface
Once a request has fired, the verbose prose the model returns has to be inspected before any of it reaches a CRM cell. response-reviewer is that inspection surface — and it cannot exist until a fired response becomes a first-class stored object instead of a bare cell value. So this spec defines two things at once: a new response-store service that records every fired response with its request, model, and review flag; and the response-reviewer remote that reads it, lets a human triage good/partial/wrong, and either accepts a whole response straight into a cell or sends the row back to be re-run.
specs/Response-Reviewer-and-Response-Store.md -
Walking-Skeleton Pre-Flight Decisions — Augment-It Rewrite
Five decisions that have to be settled before we can write code for the augment-it rewrite. Captured here as a single load-bearing doc so a future session can pick up the build without re-walking the decision tree in chat. State management is hand-rolled useSyncExternalStore. Transport is HTTP fetch to a bun sidecar at localhost. Persistence is JSON files written by the sidecar; graduate to libSQL when multi-device demands it. Auth is opaque session tokens auto-minted by the sidecar on first contact — real user_ids and sessions without an OAuth detour. The @lossless/in-app-agent scaffolding question remains open pending a final call on whether augment-it drives the package's first implementation.
specs/Walking-Skeleton-Pre-Flight-Decisions.md -
Original and Enhanced Record Instances — the Record-Instance Model
augment-it does not mutate an uploaded record set, and it does not spawn a new derived set per prompt run. It keeps an immutable original import and a single mutable enhanced instance that accumulates every enrichment in a round. The user can promote an enhanced instance to be the source of the next round, so the model is generational — original → enhanced → promote → enhanced' — with an id-map that holds across every generation so the eventual write-back into the system of record always knows its target. Two classes of enhancement — lookup and judgment — flow through this model very differently.
blueprints/Original-and-Enhanced-Record-Instances.md -
Build the Shell Tiling & Peek-Deck — Window the Federated Frontends
The augment-it shell stops being a one-at-a-time tab switcher and becomes a desktop-window-tiling surface. Two layout modes: a peek-deck where the focused frontend sits at 90% width with its sequence neighbours peeking from the edges and hover-expanding, and a co-existence split where two frontends share the viewport at a configurable ratio with a draggable seam — entered when a prompt is run against a single record. Full-width single-frontend stays available as a third option. Layout state is User-scoped preference, persisted to localStorage now against a declared shape that the forthcoming shared-auth user store will back later.
prompts/Build-the-Shell-Tiling-and-Peek-Deck.md -
Module Federation + Rsbuild — Dev Loop Gotchas
Operational reference for the five things that bite teams adopting Module Federation 2.0 on the rsbuild stack. None of them block adoption; all of them silently cost time if you don't see them coming. Cross-origin HMR, TypeScript across federation boundaries, the rspack-escape-hatch config shape, MF 1.0 vs 2.0 documentation drift, and the smaller-than-Vite plugin ecosystem. Reference for the augment-it rewrite (and anywhere else in the family that picks the same substrate).
blueprints/Module-Federation-Rsbuild-Dev-Loop-Gotchas.md -
Spec-Kit and Context-V Coexistence — How They Work Together in Augment-It
On 2026-05-18 augment-it adopted GitHub's Spec Kit (v0.8.11) alongside its existing context-v directory. This blueprint codifies how the two systems coexist: context-v holds the project's living memory (explorations, blueprints, reminders, journey docs, broader specs), and spec-kit drives implementation flow per feature (constitution → specify → plan → tasks → implement, with quality gates). The two are complementary, not competing. The 14 /speckit-* slash commands now available in Claude Code operate on .specify/, while context-v continues to be the source of truth for project memory.
blueprints/Spec-Kit-and-Context-V-Coexistence.md -
Why Response Reviewer and Highlight Collector Exist — The Verbose-Prose-to-Tabular Bridge
The core impedance mismatch Augment-It solves: CRM data is tabular (rows × columns, succinct cells), while LLM and Deep-Research responses are verbose markdown prose (paragraphs, hedging, citations, expansion). Augment-It's purpose is to turn prose back into something that fits in a CRM cell. The response-reviewer and highlight-collector are the two pipeline stages where that bridge gets built — and they exist because no structured-output regime, however good, removes the need for a human-in-the-loop integrity check before tabular data gets written back into a system of record.
blueprints/Why-Response-Reviewer-and-Highlight-Collector-Exist.md -
Multi-Agent Research Fan-Out Per Row — The Real Shape of Augment-It's Capability Runtime
Augment-It's capabilities are not single LLM calls. Each row in a CRM export gets enriched by multiple specialized research agents running in parallel — one fetches social profiles and vanity KPIs (X handle, X followers, LinkedIn), another crawls every linked page on the company's website looking for team changes, press mentions, blog posts, and PDF publications. The capability runtime, the @lossless/in-app-agent transcript shape, and the chat UI all need to handle (rows × agents) fan-out, partial results, heterogeneous latencies, per-agent rate limits, and per-agent caching. The memopop character-cast pattern is the UI surface this maps to.
explorations/Multi-Agent-Research-Fan-Out-Per-Row.md -
Run /speckit-constitution — Seed Augment-It's Constitution from Context-V
The directive to paste alongside /speckit-constitution to fill .specify/memory/constitution.md from augment-it's already-documented thinking. Five principles, two constraint sections, governance — all grounded in the context-v blueprints and specs so spec-kit synthesizes from what we've actually decided rather than re-deriving from training data.
prompts/Run-Speckit-Constitution.md -
Run /speckit-specify — Workspace + Sidecar Foundation (Feature 001)
The first feature spec for augment-it after the constitution lands. Scope: the workspace package and bun sidecar that everything else depends on, plus exactly one read-only capability (records.import) end-to-end to prove the pipe. No federation yet. No research agents yet. No chat surface implementation yet. Just the foundation that makes every subsequent feature possible — and a CSV import that lands rows in the workspace and persists them to disk.
prompts/Run-Speckit-Specify-Workspace-and-Sidecar-Foundation.md -
Augment-It as a CRM-Augmentation Pipeline (Microfrontends + Microservices)
First-pass spec capturing what Augment-It actually is, where it sits in the family of Applied AI Labs apps (memopop generates memos, dididecks generates slides, augment-it generates information that goes back into a CRM), and what the minimum viable path looks like given a paying client needs a fundraising lead list augmented this week against a repo that is currently a clean rebuild on rsbuild + Module Federation + Turbo. Journey-mode: the destination isn't pinned, the team's understanding is.
specs/Augment-It-as-CRM-Augmentation-Pipeline.md -
Changelog entries duplicated across augment-it/changelog/ and content/changelog--laerdal/
Eleven backfilled augment-it changelog entries currently live in two places. Either location can be the source of truth — but right now both are, and updates have to be made twice.
issues/Changelog-Duplicated-Across-Splash-And-Laerdal-Collection.md -
augment-it/agent-skills/decile-hub-interface/skill
The operator-facing workflow layer for getting real-world data INTO and OUT OF a client's Decile Hub CRM — sitting on top of the decile-hub-connector API contract. Use whenever importing a batch of real records into Decile (voice-note transcripts, CSV lead lists, LP rosters, event attendees), matching hand-collected records to existing Decile prospects by name, appending notes to people/prospects, or reasoning about the People-vs-Organizations-vs-Pipelines-vs-Prospects data model for a fundraising pipeline. Triggers when the user says "import these into Decile", "add these to the pipeline", "match these to Decile", "put these voice notes / this list into Decile", "attach a note to the prospect", "which pipeline do these belong to", or names the importer script decile-import-voicenotes.mjs. Encodes the read-only introspection recipe (whoami → pipelines?kind=investor → stages → prospect shape), the name-matching import pattern (Apple Voice Memos and most hand-collected records carry NO email, so the filename/typed-name is the identity key and Decile supplies the rest), where notes actually land (the Person/prospectable, NOT the pipeline row — so they surface across every pipeline that Person is in, tied to one pipeline only by the note's context label), the idempotent + additive + dry-run-first import discipline, the aliases.json spelling-bridge, and the .env gotchas that silently break the connector. The authoritative API contract is [[decile-hub-connector]] + the on-disk swagger; this skill is how a human operator drives it.
agent-skills/decile-hub-interface/SKILL.md -
augment-it/agent-skills/inbox-curation/skill
didi's triage discipline for filing captured links and sources into the right corpus (thesis/strategy/topic) inside augment-it. Use whenever the user gives didi a URL to save, asks to "file this under <corpus name>", names an existing thesis/strategy by name for a link to go under, or it's unclear which corpus a captured link belongs to. Encodes the decision tree (named + existing corpus → source.add directly; new corpus → propose domain.create first; unclear → propose or park in the inbox), the domain-resolution discipline (resolve names against the live "Existing corpora" list, never fabricate a domain_type/domain_slug), and the boundary with corpus.inbox.add (the untriaged capture-first fallback). The capability catalog and args shapes live in services/workspace/src/chat.ts's CURATOR_CHAT_VERBS slab — this skill is the reasoning on top of it.
agent-skills/inbox-curation/SKILL.md -
augment-it/blueprints/packs-and-bundles-pattern
blueprints/Packs-and-Bundles-Pattern.md -
augment-it/explorations/forced-one-by-one-tag-selector
explorations/Forced-One-By-One-Tag-Selector.md -
augment-it/issues/search-providers-as-first-class-searxng-default
issues/Search-Providers-as-First-Class-SearXNG-Default.md -
augment-it/plans/download-pdfs-into-corpus-inbox
plans/Download-PDFs-into-Corpus-Inbox.md -
augment-it/plans/person-aware-canonical-resolver-extension
plans/Person-Aware-Canonical-Resolver-Extension.md -
augment-it/plans/shell-and-micro-frontend-ux-coherence-refactor
plans/Shell-and-Micro-Frontend-UX-Coherence-Refactor.md -
augment-it/specs/augment-from-affiliations
specs/Augment-From-Affiliations.md -
augment-it/specs/chat-context-awareness-architecture
specs/Chat-Context-Awareness-Architecture.md -
augment-it/specs/corpus-inbox-capture-and-triage
specs/Corpus-Inbox-Capture-and-Triage.md -
augment-it/specs/entity-pulse-bundle
specs/Entity-Pulse-Bundle.md -
augment-it/specs/flow-for-bundles-packs
specs/Flow-for-Bundles-Packs.md -
augment-it/specs/records-surface-sort-step-and-ui
specs/Records-Surface-Sort-Step-and-UI.md -
augment-it/specs/shell-and-micro-frontend-ux-coherence
specs/Shell-and-Micro-Frontend-UX-Coherence.md -
augment-it/specs/sparse-person-enrichment-surface
specs/Sparse-Person-Enrichment-Surface.md -
augment-it/specs/tooltip-system
specs/Tooltip-System.md
calmstorm-decks 22 docs
-
Confidential Access v2 — Persistent Sessions and Telemetry (calmstorm-decks)
Site-level implementation spec for the v2 confidential access shape: server-validated passcode + signed pre-authed links, persistent sessions in Astro DB (libSQL), AuthEvent + PageView + Action telemetry, two-role access (admin / viewer), and a downstream-sharing attribution hack via passcode suffix.
specs/Confidential-Access-v2-Persistent-Sessions-and-Telemetry.md -
High-Resolution, High-Fidelity Deck Exports — From Code to Images & PDFs
explorations/High-Resolution-High-Fidelity-Deck-Exports-from-Code-to-Images-&-PDFs.md -
Gate Sensitive Information with a Simple Code
explorations/Gate-Sensitive-Information-with-Simple-Code.md -
calmstorm-decks/sitemap/section__companies-inspector
sitemap/Section__Companies-Inspector.md -
calmstorm-decks/sitemap/section__people-inspector
sitemap/Section__People-Inspector.md -
community-portfolio-service
narratives/13-community-portfolio-service.md -
competitive-advantage
narratives/12-competitive-advantage.md -
disclaimer-confidential
narratives/01-disclaimer-confidential.md -
european-landscape
narratives/08-european-landscape.md -
firm-positioning
narratives/09-firm-positioning.md -
fund-terms
narratives/17-fund-terms.md -
identity-pillars
narratives/04-identity-pillars.md -
investment-team-LPAC
narratives/11-investment-team-LPAC.md -
market-momentum
narratives/07-market-momentum.md -
opportunity-intro
narratives/06-opportunity-intro.md -
portfolio-construction-product-offering
narratives/16-portfolio-construction-product-offering.md -
portfolio-snapshot
narratives/15-portfolio-snapshot.md -
problem-intro
narratives/05-problem-intro.md -
success-in-numbers
narratives/14-success-in-numbers.md -
track-record
narratives/10-track-record.md -
venture-team
narratives/03-venture-team.md -
vision-mission
narratives/02-vision-mission.md
chroma-decks 14 docs
-
Sync enhanced-v2 scroll-deck aesthetic into the play-deck components and re-export
Plan of record for reconciling the divergence between src/pages/scroll/pitch/enhanced-v2/index.astro (heavily evolved through 2026-05-14) and the per-slide play components at src/components/slides/enhanced-v2/ (last touched 2026-05-12 except for three uncommitted edits and the new 09b Blue Ocean Canvas). Output: a consistent play deck at /play/pitch/enhanced-v2/ plus a fresh PDF export. SHELVED 2026-05-14 in favor of finishing the @dididecks/shell first — return to this after the shell can iterate playable decks cleanly.
plans/Sync-Enhanced-v2-Scroll-Aesthetic-Into-Play-Deck.md -
Discrepancy Reconciliation — Founder Deck + Call Notes vs MemoPop
Side-by-side reconciliation of every fact-bearing claim where the founder's Series A deck (2026-05-11), the founder call notes (2026-04-29), live primary sources (2026-05-12), and the MemoPop-generated investment memo (ChromaDB v0.0.7, 2026-05-03) intersect or disagree. The call notes substantially close the open questions from v0.0.1.0; what remains is the disclosure-level decision on the Ask slide and a small handful of memo-only-but-keepable category-framing claims.
explorations/Discrepancy-Reconciliation__Founder-Deck-vs-MemoPop.md -
ChromaDB · Deck Outline · Enhanced-v1
The first enhanced variant of Chroma's Series A pitch — diverging from Proto by integrating founder call notes (2026-04-29), live-checked primary sources (2026-05-12), and a tightly-screened layer of analyst-cited category framing. Adds three substantive new slides (Market, Backed by, Capital Efficiency) plus a reframed Use of Funds; locks in the funding picture, the syndicate, the enterprise ASP, and the Q4 2026 revenue milestone. Authored as one coherent through-line so design improvisation can reason about the deck holistically. Management (Jeff Huber) screens before send.
narratives/ChromaDB_Deck-Outline__Enhanced-v1.md -
ChromaDB · Deck Outline · Proto
The faithful-recreation baseline of Chroma's live Series A pitch — 13 slides ported from the management-supplied PDF (2026-05-11_Chroma-Series-A_MS-Resort.pdf) into the chroma-decks codebase. This is the substrate every subsequent whole-deck variant (Enhanced-v1, etc.) diverges from.
narratives/ChromaDB_Deck-Outline__Proto.md -
Author Enhanced-v1 deck variant from MemoPop research (ChromaDB-v0.0.7)
Plan of record for diverging Enhanced-v1 from Proto by ingesting the MemoPop-generated investment memo (corpus/memos/memopop-generated/ChromaDB-v0.0.7/), reconciling the discrepancies between the founder's deck and Alpha Partners' verified research, and authoring concrete slide-by-slide enhancements that ground every claim in citable market data.
plans/Author-Enhanced-v1-from-MemoPop-Research.md -
Slot 15 — Ask (deliberate Play-UI redesign of the closing slot)
Second seed per-slide component authored under Phase A+.4. Deliberate redesign at component-library quality: mega-numeral `$12M` hero, two-column Round / Status `<dl>` blocks, milestones footer, no inline `<pre>` blocks. Proves Play-UI can render *better* than Scroll-UI, which is the whole point of Phase 2 of the deck-iteration-workflow. Plan deviation: the original A+.4 spec said 'slot 16 — ask'; section reconciliation landed Ask at slot 15 with Colophon at 16.
sitemap/slides/enhanced-v3/15-ask.md -
Slot 05 — Bottleneck (decompose-stub only — Play-UI renders empty section)
Decompose-stub generated by `/api/slide-decompose` during the Phase A.6 smoke-test. Empty `<section data-slot="05" data-variant="enhanced-v3"></section>`; never recreated. /play/pitch/enhanced-v3/05/ renders this empty section rather than falling back to DecomposeFirstPlaceholder, because the file *exists* even though it has no content. Distinct from slots that have no file at all (those fall back correctly).
sitemap/slides/enhanced-v3/05-bottleneck.md -
chroma-decks/explorations/readme
explorations/README.md -
chroma-decks/narratives/readme
narratives/README.md -
Install Auth Surface in chroma-decks (from calmstorm pattern, with Session-2 additions baked in)
Chroma-decks is greenfield for auth. This plan installs the full calmstorm-validated auth surface (middleware, sessions, magic-link redemption, /access UI, AuthEvent log) AND the four Session-2 additions from the Shared-Auth exploration (OAuth via arctic, Organization+Membership, lossless_id UUIDv7, app_slug) — all in one go, since there's no legacy schema to migrate. Sequencing was intentionally NOT made into 'chroma-decks is the reference'; calmstorm still gets a parallel decision later. For now: ship auth on chroma; calmstorm's app_slug diff sits unstaged.
plans/Install-Auth-Surface-from-Calmstorm-Pattern.md -
Sitemap — chroma-decks consumer-side artifacts (routes the client deck authors, plus per-slide components)
Living map of artifacts authored *inside* chroma-decks — pages the client owns (homepage, /scroll/* routes, /changelog) and per-slide components that fill the shell's /play slots. Universal shell artifacts (DeckOverlay, DeckChrome, SlideRankPill, /toc, /play, /api/*) are NOT specced here — they live in `ai-labs/dididecks-ai/context-v/sitemap/` and are referenced by wikilink. When a new client deck spins up, that client's sitemap starts mostly empty; the shell sitemap is inherited.
sitemap/README.md -
/scroll/pitch/enhanced-v3/ — the most-recent Scroll-UI variant of the Chroma pitch deck
Single long page composed of 16 inline `<section data-slot data-variant>` tags representing the full pitch in Scroll-UI mode. The active slot is discovered by SlideRankPill's IntersectionObserver via the data-attrs. Mounts SlideRankPill directly today; target migration is to swap that for `<DeckOverlay--Scroll-UI deckSlug="pitch" variantSlug="enhanced-v3" />` so future overlay additions (variant cycling, notes, telemetry) compose without further consumer edits.
sitemap/routes/scroll-pitch-enhanced-v3.md -
chroma-decks/specs/readme
specs/README.md -
Slot 01 — Cover (faithful Play-UI recreation of the scroll-deck cover section)
First seed per-slide component authored under Phase A+.4. Faithful recreation of the cover section from the scroll variant — same headline, eyebrow, v3-cover class. Proves that the Play-UI runtime can render a real slot identical to its Scroll-UI counterpart. Self-contained styles + imports `../../../styles/global.css` so v3-* tokens resolve in standalone play context.
sitemap/slides/enhanced-v3/01-cover.md
cite-wide 10 docs
-
cite-wide/workflow/2026-05-01
workflow/2026-05-01.md -
The Lossless Citation Open Specification
reminders/Lossless-Citation-Spec.md -
Citation Acquisition Pipeline — Agent Architecture, Phases, Output Contract
The HOW for filling the Lossless Citation schema. Decouples the capture moment (a URL pasted into a doc) from the canonicalization moment (the source promoted into the knowledge base). Specifies the agent that does the work: where it runs, what tools it has, what phases it executes, what it emits, how it fails gracefully, and how multiple clients (Obsidian plugin, CLI, Investment Memo Orchestrator) share the same agent.
blueprints/Citation-Acquisition-Pipeline.md -
Citation Field Acquisition Guide — Per-Field Reference for Filling the Lossless Schema
The operational reference for the citation acquisition agent. For each field in the Lossless Citation schema: where the value comes from, the cheap path the agent should try first, the expensive path it falls back to, the validation rule, the failure behavior, and the publisher_types that warrant filling it. Designed to be loaded as prompt context for the agent and as a checklist for human reviewers.
blueprints/Citation-Field-Acquisition-Guide.md -
Lossless Citation Standards — Schema, Audiences, Portability Thesis
The schema layer of the Lossless citation system: what fields exist, why each exists, which audiences and source types each serves, and how the schema is designed to outlive any one rendering target. This is the WHAT and WHY. For HOW the schema gets filled, see Citation-Acquisition-Pipeline.md and Citation-Field-Acquisition-Guide.md.
blueprints/Lossless-Citation-Standards.md -
cite-wide/blueprints/maximize-data-collection-on-cannonical-sources
blueprints/Maximize-Data-Collection-on-Cannonical-Sources.md -
cite-wide/blueprints/parse-common-citation-formats
blueprints/Parse-Common-Citation-Formats.md -
This Is an Obsidian Plugin — Read the Obsidian API Docs
reminders/This-is-an-Obsidian-plugin-Read-Obsidian-API-Docs.md -
cite-wide/specs/modal-for-pasting-llm-native-content
specs/Modal-for-Pasting-LLM-Native-Content.md -
cite-wide/workflow/2026-05-01_refactor
workflow/2026-05-01_Refactor.md
content-farm 24 docs
-
Self-Hosting the Vault via Ignis — Team-Wide Browser Access to Content Farm
content-farm's whole plugin set assumes desktop Obsidian. Ignis runs Obsidian in a browser against a server-side vault — worth knowing about, not yet worth committing to.
explorations/Self-Hosting-the-Vault-via-Ignis.md -
Create a Study of the Best Obsidian Plugins
Before we ship more plugins of our own, take a deliberate read of what's working in the Obsidian community. Catalog the plugins doing the most interesting work, what they get right, what we'd do differently, and which ideas are worth borrowing — and pin the most relevant ones as a real study in content-farm so we read their code instead of paraphrasing from training data.
plans/Create-a-Study-of-the-Best-Obsidian-Plugins.md -
Obsidian Review Bot Feedback on Perplexed Submission
issues/Obsidian-Review-Bot-Feedback-on-Perplexed-Submission.md -
Obsidian Marketplace Compliance — Rules the Review Bot Enforces
reminders/Obsidian-Marketplace-Compliance.md -
Moving Beyond Simple API Calls — LLM Orchestration Options for Our Plugins
explorations/Moving-Beyond-Simple-API-Calls.md -
Nudging AI search to return contextually appropriate images
issues/Nudgeing-AI-Search-to-Return-Contextually-Appriate-Images.md -
Auto-Hyperlink Feature Names in Generated Tables
plans/Auto-Hyperlink-Feature-Names-In-Tables.md -
Cite-Wide — dedupe inline repetition of identical hex citations
plans/Cite-Wide-Dedupe-Inline-Repetition.md -
Image Drop Confirmation Gate
An Obsidian plugin that intercepts every image drag-drop and paste, then asks — before anything touches the disk or the network — where this image should go. The default is the vault. The point is to make the decision deliberate, because some of the imagery we work with is private and a chart on imgur is a phone call we don't want to make.
plans/Image-Drop-Confirmation-Gate.md -
Per-Directory Profile Templates — v0.1 Spike
specs/Per-Directory-Profile-Templates.md -
Textgenerator Plugin — Analysis
studies/Textgenerator-Analysis.md -
Enabling Obsidian Plugins to Access Homegrown API Helpers
Architecture patterns for bridging Obsidian's JavaScript environment to powerful, non-JS backend logic (Python, Rust, CLI tools) via lightweight cloud proxies.
explorations/Enabling-Obsidian-Plugins-to-access-Homegrown-API-Helpers.md -
Stenographer: an Obsidian Plugin that Transcribes Audio Content
Drop a YouTube, SoundCloud, or other listenable link into Obsidian and Stenographer turns it into a fully-frontmattered note with a streaming, AI-generated transcript — sources become searchable knowledge in one move.
specs/Stenographer-an-Obsidian-Plugin-that-transcribes-Audio-Content.md -
Citation Resolution and the Canonical Source
Three problems that look separate — link-rot recovery, smart cite-wide save with lookup-before-create, and content preservation as a future RAG corpus — are actually three operations on one underlying entity. This doc names that entity, sketches the data model, and proposes a v1 scope.
explorations/Citation-Resolution-and-Canonical-Sources.md -
Using APIs to Ingest More Data
Beyond OpenGraph.io — what Jina.ai already gives us (we pay for it), what other fetching services do, and a rough sketch of how a portfolio-company site crawler would actually work.
explorations/Using-APIs-to-Ingest-More-Data.md -
Add a New API Provider to a Metadata-Fetching Plugin
Reusable prompt for wiring a new third-party metadata API (e.g. Microlink, Jina Reader, OpenGraph.io) into an Obsidian plugin like Metafetch as an additional fetcher, without breaking the existing flows.
prompts/Add-New-API-Provider-to-Plugin.md -
Create an Audio Transcriber, with extra layers of value
specs/Create-an-Audio-Transcriber-plus-Layered-Value.md -
Renaming a Repo and managing Downstream Effects
It's not as simple as renaming the github path.
chores/Rename-Repo-Downstream-Renaming.md -
Tidy Naming — Repo Mentions of 'Obsidian' and 'Plugin'
Obsidian's community-plugin guidelines forbid using 'Obsidian' or 'Plugin' in the brand name (repo, manifest, README, description). Several of our repos still do. A punch list of what to rename, where, and why we held off until now.
chores/Tidy-Naming-Repo-Mentions-of-Obsidian-and-Plugin.md -
Migrating When an API Provider Rebrands
A vendor rebrands mid-integration — different name, different domain, sometimes different auth surface. What do you fix today, what do you leave alone, and what's the safe order? A short runbook from the day Freepik turned into Magnific.
Migrating-when-an-API-Provider-Rebrands.md -
A Component Inserter
An Obsidian command that scaffolds the right block — HTML, codefence, callout, embed — at the cursor, with frontmatter-driven defaults. Makes Lossless Flavored Markdown extension blocks feel like first-class citizens of the editor instead of patterns you have to remember.
plans/A-Component-Inserter.md -
Github Splash Page for Content Farm
An in-repo Astro site that turns the content-farm pseudomonorepo into a public landing page — hero, plugin gallery, changelog and context-v rendering — deployed for free off GitHub Pages while we wait for a real marketing surface.
specs/Github-Splash-Page-for-Content-Farm.md -
Widening (and Re-Sizing) Obsidian Plugin Modals via CSS
issues/Widen-Modals-in-Obsidian-using-CSS.md -
Obsidian Plugin Type Safety — Rules, Patterns, and Cite-Wide Conventions
reminders/Obsidian-Type-Safety.md
context-vigilance-kit 4 docs
-
Commands and Agent Skills for context-v
Reference catalog of every command, slash command, and agent skill the context-vigilance-kit ships — name, status, trigger, signature, purpose, and where the implementation lives. Modeled on Spec-Kit's pattern of making the agent-facing surface discoverable to Claude Code via .claude/commands/ and .claude/skills/, so adopters see the kit's full vocabulary natively at session start.
specs/Commands-and-Agent-Skills-for-Context-V.md -
Systematizing Chroma as the Loading Mechanism for context-v
Chroma has the data — 5,224 context-v chunks plus 257 changelog entries across the Lossless tree — but we still load context by hand or by Claude Code dir-scan. This spec names the three loops that turn the corpus from a Q&A snapshot into a living loading system: an agent that auto-fires the working-set ask at session start, a nudge policy that keeps users ambiently aware of recent activity, and a portable freshness ceremony so any pseudomonorepo can adopt the same shape.
specs/Systematizing-Chroma-as-Loading-Mechanism-for-Context-v.md -
Code-Comment Sections as Context-V Source
JSDoc treats code comments as the source of truth for API documentation. The same move might work one level up — treating *certain section-level comment blocks* in a codebase as the source of truth for context-v entries that today live as standalone markdown. The question is which kinds of context belong embedded in source files versus floating beside them.
explorations/Code-Comments-Sections-as-Context-V.md -
Tidy Context Vigilance Files Across All
A phased, manifest-driven plan to bring every context-v file in the corpus to a state we are proud of — starting with the most-developed docs, fanning out to idea-started ones, with concurrent duplicate detection and ruthless decisions on merge / kill / relocate as we go.
plans/Tidy-Context-Vigilance-Files-Across-All.md
conversational-ui-and-native-shells 8 docs
-
anything-llm
profiles/Profile__Anything-LLM.md -
Conversational UI / Native Shells — Answers to the Plan's Targeted Questions
Phase 2 of the study plan. Not a survey of the study — two specific questions, answered by citing the profiles already written, in service of the Phase 3 synthesis decision.
inquiry/Targeted-Questions-for-Cross-Product-Shell.md -
dive
profiles/Profile__Dive.md -
kaas
profiles/Profile__Kaas.md -
open-vibe
profiles/Profile__Open-Vibe.md -
openagent
profiles/Profile__Openagent.md -
routa
profiles/Profile__Routa.md -
conversational-ui-and-native-shells/profiles/profile__5ire
profiles/Profile__5ire.md
corpora-builder 2 docs
-
Corpora-Builder System Design
Corpus building has been rebuilt as a sub-feature three times across ai-labs. This exploration surveys what those iterations actually taught us, and sketches the system that deserves its own repo.
explorations/Corpora-Builder-System-Design.md -
Design Front-Loading and the Fable Build Loop
If frontier models can now carry complex builds end-to-end, the leverage moves to the documents. Can we front-load design so hard that the whole system gets built in a TDD loop — and impose design-system discipline from commit one?
explorations/Design-Front-Loading-and-the-Fable-Build-Loop.md
dark-matter 4 docs
-
dark-matter/blueprints/jumbotron-popdown-patterns
blueprints/Jumbotron-Popdown-Patterns.md -
dark-matter/blueprints/using-heartbeat-patterns-to-save-session-data
blueprints/Using-Heartbeat-Patterns-to-Save-Session-Data.md -
dark-matter/specs/master__dark-matter-site-specification
specs/Master__Dark-Matter-Site-Specification.md -
dark-matter/specs/team-page-living-spec
specs/Team-Page-Living-Spec.md
dididecks-ai 159 docs
-
Bridging PLG Self-Serve with the Previous Approach
A collaborator moved faster than expected and stood up Postgres on her own server, anchoring the data layer on cheap self-hosted infrastructure instead of the Powabase track the Cloud-Workspace spec was drifting toward. She's also angling for product-led-growth self-serve, where users won't tolerate triggering builds. The previous direction — Play-UI as static, no-JS, rigid-aspect Astro components authored by an agent — was DD-grade by construction. This exploration walks the gap between the two stances, names the actual disagreement (it's about the unit of authoring, not the engine), proposes a hybrid where slides live as structured spec rows that an agent writes and a build step compiles to Play-UI components, and pulls the PLG-vs-DD-grade fork into the open as a deliberate product decision rather than a drifted one.
explorations/Bridging-PLG-Self-Serve-with-Previous-Approach.md -
Cloud Workspace for Dididecks
A cloud-hosted, browser-accessible workspace variant for dididecks-ai engagements where installing the native desktop app is the wrong friction — without abandoning the local-filesystem path that open-source contributors and security-graded engagements still depend on. Same WorkspaceAdapter contract, additional storage and identity adapters, explicit reconstruction of the privacy properties that local-fs gives us for free.
specs/Cloud-Workspace-for-Dididecks.md -
Redesign TOC as a Deck-Level Dual-Surface Review Matrix
Today's `/toc/[deck]/[variant]/` answers a build-system question ('which slot has a Play-UI file?') when the deck-iteration-workflow centers on a workflow question ('where am I in the review cycle, and which variant is closest to shippable?'). The calmstorm-decks `/index` shows the right shape: variants as columns, slides as rows, a review-status chip per cell. We go one step further than calmstorm: each cell carries TWO chips, one per surface — scroll-review and play-review — because the workflow reviews each slide twice (once during scroll-iteration, once after porting to Play-UI). The goal the matrix should make obvious at a glance: find a single column where every slide is ≥ passable on both surfaces, with as many ★s as possible. Drift between scroll-rating and play-rating is itself a workflow signal (the port may have lost fidelity). This redesign migrates the audits schema from one rating per (slot, variant) to two ratings, makes the SlideRankPill surface-aware, builds a new `/toc/[deck]/` deck-level matrix route, and keeps the per-variant `/toc/[deck]/[variant]/` route alive as the variant landing/index — distinct purpose from the matrix. [Original lede said "folds the per-variant TOC into a redirect"; revised 2026-05-17 in-flight when in-browser review made clear the two surfaces serve different workflow needs.]
plans/Redesign-TOC-as-Deck-Level-Dual-Surface-Review-Matrix.md -
Auth — loose ends after the 2026-05-17 install
reminders/Auth-Loose-Ends.md -
Calmstorm Auth — Inventory and Future-Package Map
Session 1 deliverable of the Shared-Auth-for-Applied-AI-Labs three-session plan. Inventories the auth surface currently running in calmstorm-decks — every file, line count, dependency, env var, DB table — and maps each piece to its future location in the extracted `lossless-auth-core` package. The current calmstorm code implements ~70% of the v1 hard requirements from the parent exploration; this doc names what's package-ready, what's calmstorm-specific (and must stay in the consumer), and what's MISSING (Session 2 work).
specs/Calmstorm-Auth-Inventory.md -
Plans Inventory 2026-05-16 — Post-DeckOverlay, Post-/play-Chooser-Fix, Post-Status-Sweep
Snapshot of `dididecks-ai/context-v/plans/` as of 2026-05-16, four days after Phase A+ shipped and two days after the Restore-Calmstorm-Nav-Elegance partial landed. Supersedes `Plans-Inventory-and-Phase-A-Outcome.md` (which froze at 2026-05-12 and predates the Scroll-UI/Play-UI framing correction). Designed for a cold-start future-session land: what shipped, what's running, what's actively partial, what's deferred, and three reasonable directions for the next iteration.
explorations/Plans-Inventory-2026-05-16.md -
Componentize Slides and Establish Component Library
Walk the calmstorm-decks slide deck page-by-page, extracting raw inline HTML+CSS into a properly-taxonomized Astro component library while simultaneously building the design system that backs it. The end state: every slide variant composes from named, reusable parts; `components/basics/` stops being a dumping ground; and the work doubles as the first concrete proof of the sibling Visual-and-Diagram-Component-Library spec.
plans/Componentize-Slides-and-Establish-Component-Library.md -
Init Chroma Decks Client-Site
Stand up `client-sites/chroma-decks` for an early-growth-stage portfolio company raising a round — radically improve the founder's existing materials, marry them with MemoPop-generated investment memos and market research, and use the engagement to harden the calmstorm-decks template into a reusable client-site baseline.
plans/Init-Chroma-Decks-Client-Site.md -
Init DidiDecks as Core Submodule of AI-Labs
Carve out dididecks-ai as its own repo and re-attach it to ai-labs as a git submodule, following Lossless pseudomonorepo discipline — branch-aligned tiers, rollup-friendly context-v, splash-page on day one, and the parent's gitlink as the single point of truth.
plans/Init-DidiDecks-as-core-Submodule-of-AI-Labs.md -
Chroma-Decks Parity with Calmstorm-Decks, and the Path to a Shared Deck UI Module
Calmstorm-decks carries roughly forty UI feature-surfaces that chroma-decks does not yet have. Initial framing weighed three paths (verbatim port, abstract-while-porting, full monorepo split); dialog landed on a fourth and lighter shape — the wrapping UI becomes `@dididecks/shell`, an Astro integration published to a private pnpm-scoped npm registry, consumed by each client-site's `astro.config.mjs`. Each client-site stays a standalone repo with its own Vercel deploy; content stays put; only the chrome travels. Phase A is the TOC + slide-ranking UI inside the shell, which doubles as the Phase 1 → Phase 2 tooling from the `deck-iteration-workflow` skill.
explorations/Chroma-Parity-and-the-Path-to-a-Shared-Deck-UI-Module.md -
Plans Inventory and Phase A Outcome — What Shipped, What Remains, and the Three Gaps the Founder Surfaced on First Smoke-Test
Four plans live in `dididecks-ai/context-v/plans/`. Two have been fully executed (the dididecks-ai monorepo init and the chroma-decks scaffold). One is partly executed (Phase A of `@dididecks/shell` — A.1 through A.6 working in workspace-link mode; A.7 publish is administratively blocked). One is fully deferred (the slide componentization sweep, which now retargets into the shell). After landing the shell today, the founder smoke-tested the running surface and named three concrete gaps: no global navigation chrome, no in-scroll-deck slide-rank UI (a feature neither calmstorm nor chroma has today), and no per-slide static HTML files to feed a `/play` runtime. The next plan — Phase A+ — closes those three in a single coherent slice.
explorations/Plans-Inventory-and-Phase-A-Outcome.md -
Phase A+ — In-Deck Ranking, Shared Nav Chrome, and a Working /play Runtime
After Phase A landed `@dididecks/shell` with a working TOC + slide-ranking API + decomposition-stub generator, three concrete gaps surfaced on first founder smoke-test: no global navigation chrome connecting Scroll · TOC · Play, no way to rank a slide *from within* the scroll deck (you have to leave for a separate route), and nothing to verify the /play runtime works because the shell injects no /play route yet and chroma has no per-slide files for one to render. Phase A+ closes all three together — shell-injected global nav, a shell-exported `<SlideRankPill>` floating overlay the founder drops into the scroll deck via data-attrs, a minimum-viable `/play/[deckSlug]/[variantSlug]/[slot]?` route with ← / → keyboard nav, and two seeded per-slide files in chroma so the whole loop (rank → decompose → recreate → present) is provable end-to-end. All in workspace-link mode; Phase A.7's publish step is orthogonal.
plans/Phase-A-Plus-In-Deck-Ranking-Shared-Nav-and-Play-Runtime.md -
Phase A++ — Play Fidelity, In-Play Ranking, and Variant URL Safety
Phase A+ shipped the global nav, the floating in-scroll rank pill, a working `/play` runtime, two seeded per-slide files, and the TOC `[view →]` link — all the surfaces the founder asked for. Day-of smoke-test surfaced three concrete gaps: `/play/pitch/proto/` 404s because the proto variant has no `SLOTS[]` entry yet (the index-redirect was unconditional), the Play runtime doesn't yet have the elegant UI of calmstorm-decks (chrome feels like a dev tool, not a presentation surface), and the `<SlideRankPill>` is mounted in `/scroll` but not in `/play` even though the founder is reading-and-judging slides there too. Phase A++ closes all three without touching Phase A.7's still-blocked publish step, and seeds the calmstorm-primitive lift the larger Phase B will continue.
plans/Phase-A-Plus-Plus-Play-Fidelity-In-Play-Ranking-and-Variant-URL-Safety.md -
Port Enhanced-v2 Scroll Slides to Static 16:9 Play Slides for PDF Export
The scroll deck for chroma's pitch/enhanced-v2 is shippable by the founder's design eye, but its sections live in a scroll-flow context — `min-h-screen` heights, brand-orb gradients that bleed across section boundaries, the customer marquee animation — that won't export cleanly to PDF. This plan ports each of the 16 v2 sections, non-destructively, into static 16:9 per-slide files under `src/components/slides/enhanced-v2/{slot}-{slug}.astro` so the existing /play/[deck]/[variant]/[slot]/ runtime renders them at a predictable aspect ratio. Then a one-shot print route stacks all 16 vertically, ⌘P saves as PDF, deck ships to founder tonight. Tomorrow's Phase A++ (calmstorm-grade /play chrome + SlideCanvas/ContentFit lift) is orthogonal and not blocked by this.
plans/Port-Enhanced-v2-Scroll-Slides-to-Static-16x9-Play-Slides-for-PDF-Export.md -
Stand Up @dididecks/shell and Ship the Chroma TOC + Slide-Ranking UI
Phase A of the exploration that landed on `@dididecks/shell` as the path to chroma-↔-calmstorm parity. Scaffold `apps/deck-shell/` inside the dididecks-ai monorepo as an Astro integration; ship two seed routes (TOC + slide-ranking pills) and one decomposition-stub generator that bridges the deck-iteration-workflow Phase 1 → Phase 2 transition; install in `client-sites/chroma-decks/` first via local link, then via a v0.1.0 publish to a private pnpm-scoped npm registry. Each client-site stays a standalone repo on its own Vercel project; the shell is the only thing that travels.
plans/Stand-Up-Dididecks-Shell-and-Ship-Chroma-TOC-Ranking.md -
Three-Modes Derivation for chroma-decks
How light / dark / vibrant get derived from Chroma's light-only brand. Captures the value choices, why we made them, and the dramatic-lean posture the user picked. Canonical reference: astro-knots/sites/fullstack-vc/src/styles/theme.css and the theme-system skill.
blueprints/Three-Modes-Derivation.md -
Chroma Brand & Deck Notes (pre-scaffold)
Source-of-truth design tokens, typography, and content-source notes for the upcoming `chroma-decks` client-site. Extracted directly from trychroma.com's production CSS bundle and the Alpha Partners investment memo. Lives in dididecks-ai/context-v/explorations/ until Phase 2 of [[../plans/Init-Chroma-Decks-Client-Site]] scaffolds the chroma-decks repo — at which point this file's substance is promoted into `chroma-decks/DESIGN.md` (Stitch-spec format).
explorations/Chroma-Brand-and-Deck-Notes.md -
Dididecks-AI: Business Model Exploration
Build in public, copyleft where we can, copyright where it matters, hosted + Forward Deployed humans as the real growth engine. This is the option-space; sign-off on a model is downstream of usage signal.
explorations/Dididecks-AI-Business-Model.md -
Dididecks-AI: DD-Ready Citation and Source-Access System
Every claim in a Due Diligence deck must be backable — by an academic-grade citation, a sourceable artifact, and a downloadable trail that a receiving decision-maker can pull on without asking the sender for permission.
specs/Dididecks-AI-DD-Ready-Citation-and-Source-Access.md -
Dididecks-AI: Slide Decks as Code
A code-first paradigm for slide deck generation, iteration, and management — where AI coding assistants treat slides as components, decks as repositories, and presentations as living, versioned software rather than artifacts trapped in proprietary binary formats.
specs/Dididecks-AI-Slide-Decks-as-Code.md -
Dididecks-AI: Visual and Diagram Component Library
DD-grade decks lean on a wide universe of recurring visual primitives — concept diagrams, mental models, classification schemes, frameworks. A reusable, AI-composable library of these primitives is what lets each new deck reach 'wow' without re-drawing from scratch.
specs/Dididecks-AI-Visual-and-Diagram-Component-Library.md -
Implementation Notes for Deck Iteration Workflow
agent-skills/deck-iteration-workflow/references/implementation-notes.md -
Phase Implementation Template
agent-skills/deck-iteration-workflow/templates/phase-implementation.md -
Slide Variant Template
agent-skills/deck-iteration-workflow/templates/slide-variant.md -
dididecks-ai/agent-skills/astro-knots/references/ecosystem
agent-skills/astro-knots/references/ecosystem.md -
dididecks-ai/agent-skills/astro-knots/references/philosophy
agent-skills/astro-knots/references/philosophy.md -
dididecks-ai/agent-skills/astro-knots/references/playbooks/github-pages-deploy
agent-skills/astro-knots/references/playbooks/github-pages-deploy.md -
dididecks-ai/agent-skills/astro-knots/references/playbooks/llms-txt-and-md-sidecars
agent-skills/astro-knots/references/playbooks/llms-txt-and-md-sidecars.md -
dididecks-ai/agent-skills/astro-knots/references/playbooks/new-site-setup
agent-skills/astro-knots/references/playbooks/new-site-setup.md -
dididecks-ai/agent-skills/astro-knots/references/playbooks/opengraph-system
agent-skills/astro-knots/references/playbooks/opengraph-system.md -
dididecks-ai/agent-skills/astro-knots/references/tech-stack
agent-skills/astro-knots/references/tech-stack.md -
dididecks-ai/agent-skills/astro-knots/skill
The Lossless Group's Astro Knots conventions — vision, tech hierarchy, approved frameworks, and hard prohibitions for the family of ~10+ Astro sites and the Lossless Flavored Markdown ecosystem. Use whenever working on an Astro project in the lossless-monorepo (or any sibling repo), scaffolding new sites, choosing dependencies, building components, integrating LFM, or when the user mentions "Astro Knots", "LFM", "Lossless Flavored Markdown", or "pseudomonorepo". Hard prohibitions on React, JSX, Angular, and unnecessary dependencies.
agent-skills/astro-knots/SKILL.md -
dididecks-ai/agent-skills/changelog-conventions/references/changelog-first-development
agent-skills/changelog-conventions/references/changelog-first-development.md -
dididecks-ai/agent-skills/changelog-conventions/references/filename-conventions
agent-skills/changelog-conventions/references/filename-conventions.md -
dididecks-ai/agent-skills/changelog-conventions/references/frontmatter-spec
agent-skills/changelog-conventions/references/frontmatter-spec.md -
dididecks-ai/agent-skills/changelog-conventions/references/voice-and-shape
agent-skills/changelog-conventions/references/voice-and-shape.md -
dididecks-ai/agent-skills/changelog-conventions/references/what-counts
agent-skills/changelog-conventions/references/what-counts.md -
dididecks-ai/agent-skills/changelog-conventions/skill
How The Lossless Group writes and structures changelog/ entries across all repos (projects, true monorepos, pseudomonorepos). Use whenever shipping or pushing a coherent chunk of work, when scaffolding a new repo's changelog/ directory, when authoring a product release message, when the user says "log this", "write a changelog", or "ship note", or when reviewing a changelog/ file. Encodes the strict frontmatter (publish, lede, ISO dates), filename pattern, "it exists" priority, and the show-don't-enforce ethos.
agent-skills/changelog-conventions/SKILL.md -
Title in title case
One-sentence hook that makes the reader want to keep reading. Specific, not generic.
agent-skills/changelog-conventions/templates/entry.md -
PRODUCT vX.Y.Z — Release Title
What this release does in one attention-grabbing sentence
agent-skills/changelog-conventions/templates/release.md -
dididecks-ai/agent-skills/context-vigilance/references/developing-a-spec
agent-skills/context-vigilance/references/developing-a-spec.md -
dididecks-ai/agent-skills/context-vigilance/references/doc-type-guide
agent-skills/context-vigilance/references/doc-type-guide.md -
dididecks-ai/agent-skills/context-vigilance/references/frontmatter-spec
agent-skills/context-vigilance/references/frontmatter-spec.md -
dididecks-ai/agent-skills/context-vigilance/references/philosophy
agent-skills/context-vigilance/references/philosophy.md -
dididecks-ai/agent-skills/context-vigilance/references/status-discipline
agent-skills/context-vigilance/references/status-discipline.md -
dididecks-ai/agent-skills/context-vigilance/references/versioning
agent-skills/context-vigilance/references/versioning.md -
dididecks-ai/agent-skills/context-vigilance/skill
Lossless Group's framework for managing context-v/ directories in any project. Use whenever creating, updating, or organizing files in any context-v/ folder (specs, prompts, blueprints, reminders, explorations, issues), or when the user asks about context engineering, AI co-development workflow, or the "context-v" convention. Enforces directory roles, the four-part epoch.major.minor.patch versioning, YAML frontmatter standard, wikilink cross-references, and the prep/reflective/journey cognitive modes.
agent-skills/context-vigilance/SKILL.md -
Blueprint: TITLE HERE
agent-skills/context-vigilance/templates/blueprint.md -
TITLE HERE
agent-skills/context-vigilance/templates/exploration.md -
Issue: TITLE HERE
agent-skills/context-vigilance/templates/issue.md -
Prompt: TITLE HERE
agent-skills/context-vigilance/templates/prompt.md -
Reminder: TITLE HERE
agent-skills/context-vigilance/templates/reminder.md -
TITLE HERE
One sentence that makes a reader want to keep reading. Newsroom-style hook — not a description.
agent-skills/context-vigilance/templates/spec.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/15f60674bf070c2f
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/15f60674bf070c2f.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/25f0de5c86750b7e
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/25f0de5c86750b7e.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/38b666f4189ea895
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/38b666f4189ea895.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/40f956e078923920
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/40f956e078923920.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/6c019018c31645a0
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/6c019018c31645a0.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/76082587295e27c1
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/76082587295e27c1.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/795e94c1c0c2cc5a
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/795e94c1c0c2cc5a.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/88d0ded5729b5482
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/88d0ded5729b5482.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/a2c70d73d66ca2cc
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/a2c70d73d66ca2cc.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/b1a9507c907e5868
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/b1a9507c907e5868.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/ba5de0bff3839e6d
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/ba5de0bff3839e6d.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/c4c0fa68d0682b61
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/c4c0fa68d0682b61.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/e552f2b87caf8f63
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/e552f2b87caf8f63.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/f57055e06641af3c
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/f57055e06641af3c.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/fa616c0558874713
agent-skills/crawl-fetch-ingest/cache/calm-storm-ventures/jina/fa616c0558874713.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/future-work
Known v1 limitations and planned extensions for the crawl-fetch-ingest skill
agent-skills/crawl-fetch-ingest/future-work.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/routines/investor-credibility-ingest
Sub-workflow of crawl-fetch-ingest. Company-anchored expansion through a list of backer firms — for each firm, ingest its team + its portfolio companies (with brand assets), so the operating company's deck/site can render credibility cards for readers starting from near-zero context. Stops at the firms' portfolio companies; does NOT descend to portco CEOs.
agent-skills/crawl-fetch-ingest/routines/investor-credibility-ingest.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/routines/triage-brand-assets
Sub-workflow of crawl-fetch-ingest. Walks every brand asset that was fetched for a firm through a quality review, classifying each into good-to-go / not-urgent-passable / urgent-rework / deferred-for-now so the user can prioritize manual cleanup.
agent-skills/crawl-fetch-ingest/routines/triage-brand-assets.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/schema/company
Canonical frontmatter shape for portfolio/{slug}.md (CP3 output — portfolio companies)
agent-skills/crawl-fetch-ingest/schema/company.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/schema/firm
Canonical frontmatter shape for firm.md (the firm-level metadata file)
agent-skills/crawl-fetch-ingest/schema/firm.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/schema/person
Canonical frontmatter shape for team/{slug}.md and portfolio/{slug}-ceo.md (CP1, CP2, CP4 outputs)
agent-skills/crawl-fetch-ingest/schema/person.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/setup
One-time setup for the crawl-fetch-ingest skill — secrets file, MCP servers, helper scripts
agent-skills/crawl-fetch-ingest/setup.md -
dididecks-ai/agent-skills/crawl-fetch-ingest/skill
The Lossless Group's workflow for filling in team and portfolio metadata for VC firms and the operating companies they back — crawl a firm's site, fetch structured data + brand assets for people and companies referenced in a deck/PDF, ingest as canonical .md files with YAML frontmatter. Supports two starting anchors — firm-anchored (one VC → its team → its portfolio → portco CEOs) and company-anchored (one operating company → its backer firms → each backer's team + portfolio, stopping there) — for credibility-card use. Use whenever you need to recreate VC team pages, advisor sections, or portfolio company sections in HTML/Tailwind/Reveal slideshows; whenever the input is "here's a PDF and/or a firm URL, fill in the people and companies"; whenever you need headshots, LinkedIn URLs, company logos (SVG preferred), CEO metadata; whenever you need to "ingest our backers" or "make these investors legible to readers"; whenever the user mentions "fill out the team", "find the headshots", "credibility ingest", "we need their portfolio companies", or names this skill directly. Encodes the four-checkpoint cascade (VC team → advisors → portfolio companies → portco CEOs), the cross-tool fallback pattern (Firecrawl → Tavily → OpenGraph.io), the global-cache-per-firm convention so the same firm's data is reused across multiple decks/memos, and the loose canonical schema that sites converge toward on refactor (not enforced on ingest).
agent-skills/crawl-fetch-ingest/SKILL.md -
dididecks-ai/agent-skills/deck-iteration-workflow/skill
The Lossless Group's workflow for developing slides-only Astro sites for fundraise processes, aligned with the calmstorm-decks project patterns and the iterative approach from the "Develop a Slides-only Astro Site for a Fundraise Process" specification. Use when creating or modifying slide decks, managing slide variants, or implementing the structured iteration workflow for fundraise material development.
agent-skills/deck-iteration-workflow/SKILL.md -
dididecks-ai/agent-skills/generate-consistent-og-images/skill
agent-skills/generate-consistent-og-images/SKILL.md -
dididecks-ai/agent-skills/loops/git-conventions/references/body-structure
agent-skills/loops/git-conventions/references/body-structure.md -
dididecks-ai/agent-skills/loops/git-conventions/references/examples
agent-skills/loops/git-conventions/references/examples.md -
dididecks-ai/agent-skills/loops/git-conventions/references/header-patterns
agent-skills/loops/git-conventions/references/header-patterns.md -
dididecks-ai/agent-skills/loops/git-conventions/skill
The Lossless Group's git commit message conventions — structured headers with action verbs and effort groupings, paragraph-spaced bodies that explain impact before implementation, and "Also included" riders for minor changes. Use when writing commit messages, reviewing commits, or when the user mentions "commit message format", "git conventions", or asks how to structure a commit.
agent-skills/loops/git-conventions/SKILL.md -
dididecks-ai/agent-skills/loops/maintain-design-md/skill
How to author and maintain a `DESIGN.md` file at the root of any Lossless project (site, splash page, plugin landing, fundraise deck) following Google Stitch's open spec. Use whenever a project is missing a `DESIGN.md` and an agent needs the project's visual identity in machine-readable form; whenever the user mentions "design tokens", "design system", "DESIGN.md", or "Stitch spec"; whenever theme/CSS-token work changes the runtime values (new CSS custom property in `:root`, renamed token, new mode, new component pattern, refreshed palette, refreshed typography scale) and the documented contract has drifted; whenever a sibling skill (`generate-consistent-og-images`, `theme-system`, `astro-knots`) needs to read locked design values; whenever the user says "the agent doesn't know what color we use" or "let's write down the design system." Encodes (1) the Stitch spec's frontmatter token groups (colors, typography, rounded, spacing, components) and the eight prose sections in canonical order, (2) the maintenance triggers — what kinds of code changes should bounce back into the document, (3) the "runtime CSS is source of truth, DESIGN.md is the contract" discipline, (4) the precedent for off-spec extensions like an `imagery:` block, (5) anti-patterns. The skill never sees an API key or makes network calls — it's a pure-document discipline.
agent-skills/loops/maintain-design-md/SKILL.md -
dididecks-ai/agent-skills/loops/maintain-design-md/templates/design-md-scaffold
★ One paragraph describing the visual identity. Mention the runtime source-of-truth path so future agents know where to read the actual values.
agent-skills/loops/maintain-design-md/templates/design-md-scaffold.md -
dididecks-ai/agent-skills/loops/maintain-filemap/skill
Use whenever the directory shape of a Lossless pseudomonorepo (or any child repo) changes — a new top-level directory is added, a submodule is mounted or unmounted, a major subsystem is renamed — or on a weekly cadence, or before any release that would land on GitHub, to regenerate the `FILEMAP.md` at each affected repo's root so collaborators see the current shape without cloning. Triggers when the user mentions "filemap", "tree", "directory layout", "repo overview", "what does this repo even contain", "new collaborator joining"; also when the agent itself proposes adding/removing a top-level dir or a submodule, because that's exactly the moment the discipline matters.
agent-skills/loops/maintain-filemap/SKILL.md -
Loops — recurring maintenance disciplines that keep the repo legible over time
A new context-v category for skills that aren't one-shot specs or plans but **recurring rhythms** — the small, regular maintenance moves that keep a fast-moving repo readable to humans + agents who weren't there when the work happened. Each loop lives as its own subdirectory with a SKILL.md, optional scripts/, and templates/. Companion concept (TBD): `context-v/pairing/` for human-agent collaboration disciplines.
agent-skills/loops/README.md -
dididecks-ai/agent-skills/lossless-flavored-markdown/references/extensibility
agent-skills/lossless-flavored-markdown/references/extensibility.md -
dididecks-ai/agent-skills/lossless-flavored-markdown/references/frontmatter-schema
agent-skills/lossless-flavored-markdown/references/frontmatter-schema.md -
dididecks-ai/agent-skills/lossless-flavored-markdown/references/package-and-setup
agent-skills/lossless-flavored-markdown/references/package-and-setup.md -
dididecks-ai/agent-skills/lossless-flavored-markdown/references/syntax-and-directives
agent-skills/lossless-flavored-markdown/references/syntax-and-directives.md -
dididecks-ai/agent-skills/lossless-flavored-markdown/references/triggers-to-component-pipeline
agent-skills/lossless-flavored-markdown/references/triggers-to-component-pipeline.md -
dididecks-ai/agent-skills/lossless-flavored-markdown/skill
The Lossless Group's extended-markdown flavor — what LFM is, when to use it, how its directives normalize across syntaxes (CommonMark, GFM, Obsidian callouts, remark-directive, Markdoc), how citations and link previews work, and how sites extend it via trigger maps and theme tokens. Use whenever authoring or rendering content in any Astro Knots site, integrating the @lossless-group/lfm package, building or registering custom components for markdown, debugging callouts/embeds/citations, or when the user mentions "LFM", "Lossless Flavored Markdown", "extended markdown", "directive syntax", "wikilink", "trigger map", "callout", or "hex-code citation".
agent-skills/lossless-flavored-markdown/SKILL.md -
dididecks-ai/agent-skills/maintain-splash-pages/skill
The Lossless Group's pattern for repo-level splash pages — small Astro sites at <repo>/splash/ that ship to GitHub Pages on push to main, render the repo's changelog/ + context-v/ alongside curated marketing copy, and stay isolated from any package the repo also publishes. Use proactively whenever scaffolding a noteworthy new repo (every "important" repo wants one), when shipping a coherent chunk of work that an external reader would land on, when adding a feature (search, sort, tags row, theme mode) to an existing splash, when converting a legacy apps/<name>/ site to splash/, when troubleshooting a Pages deploy, or when the user mentions "splash", "GitHub Pages", "lossless-group.github.io", "Pagefind on our site", or working under a splash/ directory. Codifies the proven shape across three reference implementations (memopop-site, content-farm/splash, lfm/splash) and the package-isolation discipline that keeps splashes safe to add to repos that also publish to JSR/npm.
agent-skills/maintain-splash-pages/SKILL.md -
dididecks-ai/agent-skills/open-graph-share-seo-geo/references/llms-txt-implementation
agent-skills/open-graph-share-seo-geo/references/llms-txt-implementation.md -
dididecks-ai/agent-skills/open-graph-share-seo-geo/references/seo-best-practices
agent-skills/open-graph-share-seo-geo/references/seo-best-practices.md -
dididecks-ai/agent-skills/open-graph-share-seo-geo/references/sitemap-implementation
agent-skills/open-graph-share-seo-geo/references/sitemap-implementation.md -
dididecks-ai/agent-skills/open-graph-share-seo-geo/references/unfurler-matrix
agent-skills/open-graph-share-seo-geo/references/unfurler-matrix.md -
dididecks-ai/agent-skills/open-graph-share-seo-geo/references/user-tools-for-image-generation
agent-skills/open-graph-share-seo-geo/references/user-tools-for-image-generation.md -
dididecks-ai/agent-skills/open-graph-share-seo-geo/skill
How to make a page unfurl reliably in iMessage, WhatsApp, Slack, Discord, LinkedIn, and X; surface to search engines via sitemap.xml + robots.txt; and stay legible to generative engines (GEO), including the llms.txt standard for LLM corpus ingest. Use when adding or debugging OpenGraph / Twitter Card metadata, picking an OG image format, choosing where to host the image, fixing pages that "won't unfurl", auditing share previews, scaffolding /llms.txt and /llms-full.txt, or adding @astrojs/sitemap + robots.txt to a splash or marketing site. Encodes the JPEG-over-WebP rule, the ImageKit content-negotiation gotcha, the absolute-URL requirement, the og:image:type-must-match-bytes invariant, the cache-busting recipe for forcing a re-unfurl, the prose-in-markdown source-of-truth pattern for llms.txt, and the sitemap filter that keeps non-HTML routes (llms.txt, 404) out of the search-engine index.
agent-skills/open-graph-share-seo-geo/SKILL.md -
dididecks-ai/agent-skills/overlay-svg-text/skill
How to overlay on-brand SVG text on Lossless OG / share imagery — Hack Bold gradient-filled h1, thin sans eyebrow, Poor Story handwritten note. Use whenever a generated OG image needs title/eyebrow/sub text composited on top before it ships (the empty-region zone from `generate-consistent-og-images` is the canvas this skill paints into), whenever an unfurl preview looks too anonymous without a wordmark or subtitle, whenever a fundraise-deck slide needs a brand-flavored title overlay on a hero image, whenever the user says "overlay text on the OG image", "add a title to the banner", "make the unfurl say something", "drop a wordmark on this", or names this skill directly. Encodes the brand-wide type system (Hack Bold for gradient h1, thin sans for eyebrow, Poor Story for handwritten notes), the per-site gradient-from-DESIGN.md discipline (the brand SVGs are raster-baked references, not editable gradient sources — the editable gradient lives in each project's DESIGN.md), the canonical SVG fill-with-gradient pattern (simpler and more portable than mask/union for this use case), and the sharp-based compositing pipeline that writes JPEG-out for delivery per the open-graph-share-seo-geo skill.
agent-skills/overlay-svg-text/SKILL.md -
dididecks-ai/agent-skills/pseudomonorepos/references/anatomy
agent-skills/pseudomonorepos/references/anatomy.md -
dididecks-ai/agent-skills/pseudomonorepos/references/branch-alignment
agent-skills/pseudomonorepos/references/branch-alignment.md -
dididecks-ai/agent-skills/pseudomonorepos/references/content-rollup
agent-skills/pseudomonorepos/references/content-rollup.md -
dididecks-ai/agent-skills/pseudomonorepos/references/lifecycle-workflow
agent-skills/pseudomonorepos/references/lifecycle-workflow.md -
dididecks-ai/agent-skills/pseudomonorepos/references/search-first
agent-skills/pseudomonorepos/references/search-first.md -
dididecks-ai/agent-skills/pseudomonorepos/references/the-tree
agent-skills/pseudomonorepos/references/the-tree.md -
dididecks-ai/agent-skills/pseudomonorepos/skill
The Lossless Group's coined term and pattern — parent repos that aggregate child repos (often as git submodules) primarily to host a parent-level context-v/. Use whenever working anywhere in lossless-monorepo or its descendants, when starting any new task that might overlap with prior work, when scaffolding a new project, when the user mentions "pseudomonorepo", "submodule", "context-v", or names of the children (ai-labs, astro-knots, content-farm, tidyverse), AND ALWAYS when the user proposes to move/relocate/re-clone/re-nest a repo within the tree (which triggers the HARD STOP three-precondition checklist — local branches synced, remote branches catalogued, gitignored secrets backed up). Encodes the search-first-before-creating behavior, the tree-walking discipline, and the relocation-safety protocol.
agent-skills/pseudomonorepos/SKILL.md -
dididecks-ai/agent-skills/readme
agent-skills/README.md -
dididecks-ai/agent-skills/search-lossless-corpus/skill
Use whenever the user asks a question that prior work might already have answered — "what did we decide about X", "when did we ship X", "why did we choose X over Y", "has this failed before", "where did we put X" — and generally to ground answers in The Lossless Group's own corpus instead of training-data folklore. Encodes the four local Chroma collections (`context-vigilance-corpus`, `lossless-changelog`, `claude-code-sessions`, `claude-code-tool-traces`) reachable via the `chroma` MCP server, the four-step agentic-search loop (decompose → execute → evaluate → synthesize), the citation discipline (source path + timestamp + repo slug for every claim), and the metadata-filter patterns that make queries precise. Triggers on questions about prior decisions, shipped work, past Claude Code sessions, recurring tool failures, or any "did we already…" framing. Does not cover Chroma setup, ingestion pipelines, or maintenance — those are handled by [[chroma-local]] and the [[context-vigilance-kit]] scripts.
agent-skills/search-lossless-corpus/SKILL.md -
dididecks-ai/agent-skills/setup-new-dddecks-workspace/skill
Scaffold a new dididecks-ai client workspace end-to-end — submodule scaffold under `client-sites/<slug>/`, DESIGN.md from the client's brand identity, theme tokens, auth-surface wiring, initial substantiation-corpus connection, and a Scroll-UI starter deck the deck-iteration-workflow can pick up from. Two source-of-branding modes — **website-parse** (crawl the client's public site for tokens, fonts, logos via `crawl-fetch-ingest`) and **source-code-copy** (lift `theme.css` / `DESIGN.md` / brand assets directly from an existing repo when the client is us, an adjacent Lossless property, or otherwise hands over their source). Use whenever a new engagement starts and a `client-sites/<slug>/` submodule does not yet exist; whenever the user says "set up a workspace for <client>", "scaffold a new client", "we have a new client", "spin up a deck site for <firm>"; whenever The Lossless Group itself or any other internal Lossless property needs a deck-site of its own (source-code-copy mode triggers automatically when the brand source is a sibling Lossless repo); and as the cloud-workspace evolves, whenever the equivalent flow needs to fire from a chat surface rather than a CLI. Composes the existing skills — does not re-implement them — for crawl-fetch-ingest, maintain-design-md, theme-system, generate-consistent-og-images, deck-iteration-workflow, and pseudomonorepos (the submodule and branch-tier discipline).
agent-skills/setup-new-dddecks-workspace/SKILL.md -
dididecks-ai/agent-skills/slide-target/skill
Load the full working context for ONE DidiDecks slide (deck/variant/slot) so an agent can iterate on it slide-by-slide without re-explaining where things live. The first of the `slide-*` skill family (target → improve → rank → decompose). Use whenever the user wants to work on a specific slide of a DidiDecks/Astro deck — "let's work on slide 2", "fix this card", "/slide-target rural-income v1 02", "go slide by slide", "target the funder-pipeline slide" — or when iterating on a client-site deck under dididecks-ai (reach-edu-hub, chroma-decks, etc.). Assembles the section file, the slides.ts slot, the narrative slot, the rank/audit status, the live URLs, and the design-system tokens for exactly that slide, then scopes all work to it. Composes with deck-iteration-workflow and theme-system.
agent-skills/slide-target/SKILL.md -
dididecks-ai/agent-skills/study-repos-first/skill
The Lossless Group's discipline of pinning a curated collection of upstream repos (a "study") around a domain question *before* designing or coding in that domain. Use when starting work that touches conventions, file formats, schemas, protocols, or any decision where prior art exists; when the user mentions "study", "studies/", "reference collection", "prior art", "pin a submodule", or names of existing studies (open-specs-and-standards, memory-layers-for-agents, data-analytics-specifications-and-standards); when scaffolding a new study, extending one, or deciding whether something belongs in a study vs. a project. Encodes the "read upstream code, don't paraphrase from training data" behavior.
agent-skills/study-repos-first/SKILL.md -
dididecks-ai/agent-skills/theme-system/references/file-organization
agent-skills/theme-system/references/file-organization.md -
dididecks-ai/agent-skills/theme-system/references/two-tier-tokens
agent-skills/theme-system/references/two-tier-tokens.md -
dididecks-ai/agent-skills/theme-system/references/vibrant-mode-implementation
agent-skills/theme-system/references/vibrant-mode-implementation.md -
dididecks-ai/agent-skills/theme-system/skill
The Lossless Group's theme and mode architecture — two-tier token system, three-mode contract (light/dark/vibrant), theme.css organization, and design system conventions. Use when setting up themes/modes for any Astro Knots site, debugging mode toggles, working with CSS tokens, or when the user mentions "vibrant mode", "two-tier tokens", "theme.css", or design system patterns.
agent-skills/theme-system/SKILL.md -
Auth surface — Identity, Session, Token, Organization, Membership, AuthEvent
The auth tables that gate every deck. Already a SQLite-shaped DB (astro:db on libSQL local, Turso remote) — so unlike the .md-on-disk models, this one is closer to translation-ready. Chroma is the most recent and authoritative schema. Calmstorm is an earlier-shape version. Humain doesn't have auth installed yet.
models/Auth-Surface-Data-Model.md -
Company — portfolio companies + brand-asset metadata
One markdown file per portfolio company, with sibling-colocated brand assets (trademark + favicon + optional og:image URL). The Person model also lives under portfolio/ — the discriminator is the presence/absence of `role_class`. Companies are everything in portfolio/ that does NOT carry role_class.
models/Company-Data-Model.md -
Deck / Variant / Slot — the deck-OS registry
The spine of dididecks. Each client carries TypeScript modules at src/data/{decks,slides}.ts that the shell's registry-loader evaluates at build time to derive what decks + variants + slots exist. The filesystem is the source of truth for slot existence — the scroll-page section annotations are scanned and reconciled against the manual map. Translating this to a DB means modeling the registry the same way it composes today: deck → variants → slots, plus derived runtime state.
models/Deck-Variant-Slot-Registry-Data-Model.md -
Engagement telemetry — PageView + Action append-only logs
Reader-behavior telemetry colocated in the same astro:db as the auth surface. Captures every page view + every meaningful action (clicked CTA, opened TOC, rated a slot, jumped to a slot) tied to a session. Append-only — never updated. Foundation for 'who looked at what for how long' reporting back to founders.
models/Engagement-Telemetry-Data-Model.md -
Firm — VC firm / backer firm metadata
One firm.md per firm-anchored directory — the metadata about the VC firm that the deck is either authored by or referencing as a backer. Present in calmstorm (single-firm) and chroma (multi-investor) layouts; absent from humain (flat operating-company layout — the operating company IS the firm and its metadata lives in DESIGN.md + the deck content itself, not a firm.md).
models/Firm-Data-Model.md -
Person — team members, advisors, portfolio CEOs
One markdown file per person, with sibling-colocated headshot. The `role_class` field discriminates the person's relationship to the firm — vc-team, managing-partner, advisor, portco-ceo, etc. — and the shell's /data-assets/people route surfaces everything via a single glob across both team/ and portfolio/ directories.
models/Person-Data-Model.md -
Data + content models in dididecks-ai (as-observed-from-filesystem)
A reference set for a collaborator designing the remote database. We've been using the local filesystem as a polyglot data store across calmstorm-decks, chroma-decks, and humain-vc-decks — different shapes per client, but with recoverable patterns. This directory documents what the patterns actually are so the remote DB design doesn't have to be guessed at.
models/README.md -
Slide audit registry — per-slot dual-surface review ratings
The only runtime-mutable data model in the filesystem. A single JSON file per client stores reviewer ratings per (variant, slot) cell, separately for Scroll-UI and Play-UI, mutated by the shell's /api/slide-rank POST endpoint as reviewers click the rating pill in the deck overlay.
models/Slide-Audit-Registry-Data-Model.md -
Substantiation corpus — source decks, intake material, raw assets
The deliberately-not-tracked-by-git layer. Founder-supplied PDFs, page-burst PNGs, memopop-generated memos, brand-asset libraries, raw scraped HTML. Lives at <client>/corpus/ (gitignored) per the chroma pattern. A parent-level dddecks-corpus submodule was newly stood up on 2026-06-07 to give the team a private home for cross-engagement substantiation. The DB doesn't store this content — it's blob-on-disk by design — but should track references.
models/Substantiation-Corpus-Data-Model.md -
Integrate reach-edu-hub into the shared @dididecks/shell — scroll-UI first, adopting the shell's /scroll/[deck]/[variant] URL convention
reach-edu-hub is the one client-site still standing fully outside the shell: it is not in the root pnpm-workspace, carries zero @dididecks/shell references, ships output: 'static' with no auth, and renders three bespoke scroll decks (/story, /story/version-2, /automation) on a locally-ported PageAsDeckWrapper with its own scroll-decks.ts variant registry and seo.ts. Every sibling (chroma-decks, humain-vc-decks, lossless-decks) already consumes the shell as a workspace integration. This plan onboards reach using chroma-decks as the canonical template: join the workspace, add the integration call, author the decks.ts / slides.ts / audits.json contract files, migrate the three decks to the shell's /scroll/[deck]/[variant] routing, and add slot-discovery annotations to the T01–T11 section components — incrementally (scroll-UI through the shell now; the rigid no-JS Play-UI per-slide conversion is deferred to a later pass). The session this plan opens also has two adjacent tracks: build a few new reach decks on the freshly-integrated shell, and push any shell friction the integration surfaces back into apps/deck-shell rather than working it around in reach.
plans/Integrate-Reach-Edu-Hub-into-Dididecks-Shell.md -
Lift chroma-decks' generic layouts, utilities, and registry-derivation helpers into the shared @dididecks/shell so every client-site inherits the same primitives instead of forking from chroma
Chroma-decks was built before the @dididecks/shell carve-out, so it carries the original implementations of several deck-generic primitives (PageAsDeckWrapper, SlideShell, mode-switcher, ModeToggle, deck-overview) inside client-specific paths. Each new client-site onboarded since then has either re-implemented the same behavior locally (humain-vc-decks initially had no keyboard nav at all) or copy-pasted from chroma without a clean import boundary. The humain-vc-decks onboarding on 2026-06-06 surfaced this drift directly when the new client's scroll pages shipped without scroll-snap, keyboard arrows, or a section counter — affordances every client should get for free from the shell. PageAsDeckWrapper has already been lifted (commit c87c643) as the first cut; this plan formalizes the rest of the audit list and sequences the remaining promotions so that (a) every client-site can consume the same vocabulary, (b) chroma's local copies migrate off cleanly without breaking the working production deck, and (c) future client onboardings start with a fresh-shell audit pass before any copy-paste.
plans/Lift-Chroma-Decks-Generic-Code-into-Shared-Shell.md -
Refactor data-assets audit for per-asset quality ratings, brand-asset disambiguation, and deck-render guards
The /data-assets/{companies,people} audit pages today treat brand imagery as a generic 'logo' field. In practice a company has FOUR distinct assets — favicon, trademark, wordmark, og:image — and each can be present-but-glitchy, missing, or immaculate. Decks bundle these assets at render time, and a glitchy favicon shipped into an investor's inbox is a brand-credibility wound that's expensive to recover from. This plan refactors the audit pages to (1) display each of the four assets as its own labeled cell, (2) carry a per-asset U/C/P/Star quality rating, (3) flag incomplete/missing/glitchy assets visibly, and (4) introduce a build-time render guard so a flagged asset can't accidentally ship to a final deck. People audit gets the parallel treatment for headshots + LinkedIn presence.
plans/Refactor-Data-Assets-Audit-for-Brand-Quality-Ratings-and-Render-Guards.md -
Refactor scroll-ported slides into true static play-format slides (per-client, repeat for every deck)
Operational plan, reusable across every dididecks client engagement, for converting per-slide files that were COPIED from scroll-deck sections (and therefore still carry scroll-mode idioms — vw/vh/clamp viewport units, IntersectionObserver-driven reveals, marquees, transitions, breakpoint media queries) into the static-only HTML/CSS/Tailwind form @dididecks/shell's /play and /print routes require. The calmstorm-decks `src/slides/by-title/` fileset is the reference implementation; this plan extracts its discipline so any client deck (chroma-decks today, future engagements tomorrow) can be ported the same way. Includes the rationale, the checklist, the per-slide procedure, the verification loop, and the anti-patterns to flag during code review.
plans/Refactor-Scroll-Ported-Slides-to-Static-Play-Format.md -
Restore Calmstorm's nav-chrome elegance as themable shell primitives (separate structure/behavior from styling)
@dididecks/shell v0.1's PlayChrome solved the navigation contract but discarded calmstorm-decks' deliberately elegant chrome — floating bottom-right capsule, glassy white/grey/black, fade-on-idle, two-axis nav (variant cycling + section walking), custom tooltips, tabular-num counter — and replaced it with a heavy dark bottom bar that always claims viewport real-estate. This plan lifts the calmstorm chrome forward as package-level primitives in apps/deck-shell/, with structure and behavior cleanly separated from visual styling via a CSS-custom-property theming contract. Consumers (chroma-decks today; future client sites tomorrow) inherit a sensible neutral default (calmstorm's plain white/grey/black) when client-specific tokens aren't supplied, and override with their own design system when they are. Hybrid of port-and-replace + re-skin: port the bones, ship the calmstorm look as the universal fallback, then let chroma-decks (and others) light them up with their own brand.
plans/Restore-Calmstorm-Nav-Elegance-as-Themable-Shell-Primitives.md -
DeckChrome — themable floating navigation capsule for Play-UI (and eventually Scroll-UI variant cycling)
Floating bottom-right capsule with paginator, ← / → slot nav, TOC link, optional ↑ ↓ variant cycling, and the full keyboard contract (← → Space PageUp/Down Home End F C T Esc). Replaces v0.1's heavy dark PlayChrome bar. Structure / behavior / styling are separated by discipline: structure is the Astro template, behavior is the inline keyboard script and `ddd:section-*` event dispatch, styling reads only `--ddd-chrome-*` CSS custom properties (neutral defaults inline; consumer overrides at any wrapping element). Lives inside `DeckOverlay--Play-UI` as the default `nav` slot today; will also serve as the variant-cycling element of `DeckOverlay--Scroll-UI` under Phase 2.
sitemap/components/DeckChrome.md -
DeckFrame--Play-UI — Play-UI chrome wrapper around SlideCanvas, plus the keyboard contract
The Play-UI mode's outer frame. Composes <SlideCanvas> with the chrome that surrounds it on the per-slot route — the floating DeckChrome (next/prev/TOC capsule, bottom-right) and the document-level keyboard listener (← / → / PageUp / PageDown / Home / End / F fullscreen / C chrome toggle / Esc). Mounts inside `/play/[deck]/[variant]/[slot]/`. The Scroll-UI sibling is `PageAsDeckWrapper` (since the shell consolidation in this engagement) — kept as a paired pattern so the two modes have visually + behaviorally parallel chrome at run-time.
sitemap/components/DeckFrame--Play-UI.md -
DeckMatrix — the rich audit-rated dual-surface matrix; the deck-level review surface, embeddable on any landing
Renders the full variants × slots matrix as an embeddable component. Each cell pairs a Scroll-UI rating (left half) and a Play-UI rating (right half) from `data/audits/slides.json`; per-variant shippability rollups land in the column headers; per-row drift indicator (`≠`) flags cells where the two surfaces disagree. Used in two places: the `/toc/[deckSlug]/` route mounts it directly; consumer landings (chroma + humain) embed it on their `src/pages/index.astro` to give the same review surface inside the deck's own chrome. Optional `showNav={true}` adds the `DididecksNav` variant-chooser pills above the matrix.
sitemap/components/DeckMatrix.md -
DeckOverlay--Play-UI — the floating overlay layer for Play-mode decks
Single mount point for /play/[deck]/[variant]/[slot]/ that composes DeckChrome (paginator + slot-step nav + keyboard contract) and SlideRankPill (classifier) above the active slide, plus named slots for Phase 3 presenter notes and Phase D telemetry. Wraps the slide in a `<section data-slot data-variant>` so SlideRankPill's existing IntersectionObserver finds exactly one section — the play-mode adapter is the section-wrap itself, no special play-mode prop required. Sets `data-play-root` + `data-chrome-hidden` so DeckChrome's `C` keypress fades the whole overlay together.
sitemap/components/DeckOverlay--Play-UI.md -
DeckOverlay--Scroll-UI — the floating overlay layer for Scroll-mode decks
Single mount point that composes the persistent overlay affordances riding over a Scroll-UI deck: the classifier pill (today), variant-cycling nav + counter (Phase 2 via PageAsDeckWrapper), presenter notes (Phase 3), and engagement telemetry (Phase D). Each is a named slot so consumers can rearrange or omit. The overlay element itself is layout-neutral (`display: contents`) — its children own their own fixed/absolute positioning. The Scroll-UI variant of this paired family; see DeckOverlay--Play-UI for the slot-per-route sibling.
sitemap/components/DeckOverlay--Scroll-UI.md -
DeckStatsPanel — the 4-tile quick-stats row above the matrix on landing pages (Variants · Slide Files · People · Companies)
Renders a 4-tile grid above `DeckMatrix` on consumer landings — Design Variants count (links to `/scroll/`), Slide Files count (links to the canonical variant scroll page), People count (links to `/data-assets/people`), Companies count (links to `/data-assets/companies`). All counts computed at build time from the same `import.meta.glob` patterns the `/data-assets/*` audit routes use, so the numbers always match what the audit pages render. Replaces the per-client AssetsDataPanel that calmstorm + chroma each had locally — lifted to the shell so consumer sites don't reinvent the count math or the tile chrome.
sitemap/components/DeckStatsPanel.md -
DecomposeFirstPlaceholder — empty-slot fallback rendered when a per-slide file doesn't exist yet
Rendered by `/play/[deck]/[variant]/[slot]` when the resolved per-slide file at `{slidesComponentsRoot}/{variant}/{slot}-{slug}.astro` does not exist. Communicates the next action — open the TOC at `?focus={slot}`, rank as redo-worthy, click scaffold to create the stub — without sounding like an error state. The instructive-helpful tone is deliberate: this is the framework's invitation to begin the rank → decompose → recreate loop, not an Astro 404.
sitemap/components/DecomposeFirstPlaceholder.md -
DididecksNav — shell-injected global header linking Scroll · TOC · Play · Changelog
Top-of-page nav auto-mounted on every shell-injected route (/toc/*, /play/*) and importable into consumer-owned routes (homepage, scroll-deck variants). Links derive from the consumer's deck registry — Scroll → first deck slug, TOC and Play → first deck + first variant. Brand slot lets each client deck drop in its own wordmark; default is a text wordmark sourced from the integration's `client` option. Reads `Astro.url.pathname` to flag the active link with `aria-current="page"`.
sitemap/components/DididecksNav.md -
ModeToggle — three-mode color-toggle (light → dark → vibrant) with per-client localStorage namespace
Fixed top-right button that cycles light → dark → vibrant on click. Renders three SVG icons (sun / moon / star); CSS shows only the matching icon for the current `data-mode` on `<html>`. Inline-imports the `runtime/mode-switcher` factory and installs the singleton at mount with a `client` prop value used as the localStorage namespace (`{client}:mode`) so multiple decks deployed on the same domain don't collide on mode persistence. Lifted from `chroma-decks/src/components/basics/ModeToggle.astro` on 2026-06-06 as part of the chroma-to-shell promotion pass.
sitemap/components/ModeToggle.md -
PageAsDeckWrapper — Scroll-UI navigation primitive: scroll-snap + keyboard + section counter + reveal-on-intersect
Wraps a series of `<section data-slot data-variant>` children in a scroll-snap deck. Delivers: vertical scroll-snap, the full keyboard contract (Arrow ↑/↓, PageUp/Down, Home, End, `c` chrome toggle, `f` fullscreen), double-click step, floating section indicator top-right (`NN / total`), `#s-N` hash navigation on load, IntersectionObserver-driven reveal animations for `.reveal-item` children, and the event protocol (dispatches `deck:section-changed`, listens for `deck:section-prev` / `deck:section-next` so DeckChrome buttons drive the same nav as keyboard / scroll). Lifted from `chroma-decks/src/layouts/PageAsDeckWrapper.astro` on 2026-06-06.
sitemap/components/PageAsDeckWrapper.md -
PlayChrome — DEPRECATED thin shim around DeckChrome
Deprecated as of v0.2. Use `<DeckChrome>` directly. Kept as a thin shim so any external code still importing `PlayChrome` keeps working through the transition. v0.1's heavy dark bottom-bar chrome was replaced by the calmstorm-flavored floating capsule per the `Restore-Calmstorm-Nav-Elegance-as-Themable-Shell-Primitives` plan. Remove in v0.3.
sitemap/components/PlayChrome.md -
ScrollDeckPage — THE single shell overlay for a scroll-deck variant page; one-import wiring
Bundles every shell concern a scroll-deck variant page needs into ONE component: pagination (scroll-snap + keyboard via `PageAsDeckWrapper`), the four-state rating pill bottom-right (via `DeckOverlay--Scroll-UI` which hosts `SlideRankPill`), and the three-mode color toggle top-right (via `ModeToggle`). The consumer authors only the `<section data-slot data-variant>` blocks inside the slot; ScrollDeckPage handles all the wiring. The `client` value (per-deployment localStorage namespace for ModeToggle) is read from the shell's resolved options on `globalThis.__dididecksShellOptions` — consumers don't have to re-pass it on every page. Authored 2026-06-07 after the chroma-to-shell lift pass exposed that humain was making three separate imports and three mount sites per variant — this collapses to one.
sitemap/components/ScrollDeckPage.md -
SlideCanvas — pure-CSS 16:9 wrapper that scales a 1920×1080 stage to fit any canvas
Per @dididecks/shell contract, rendered play decks must be static HTML + CSS — no JS in the scaling pipeline. SlideCanvas uses CSS container queries (`container-type: size`) to compute a unitless scale ratio from canvas size to the design size (1920×1080 by default), then applies `transform: scale()` to a `position: absolute` stage. `min(100cqw/designW, 100cqh/designH)` picks whichever axis is the binding constraint so the slide letterboxes correctly when canvas aspect ≠ 16:9. The route's `[slot].astro` is responsible for sizing the canvas; this component just translates that size into a scaled stage.
sitemap/components/SlideCanvas.md -
SlideRankPill — floating five-button classifier for the active slot (rename pending → SlideClassifierPill)
Bottom-right floating pill that shows the active slot's number + title and exposes five enum buttons — Urgent / Could-be-better / Passable / Perfect / Pending. In Scroll-UI it discovers the active slot via IntersectionObserver over `section[data-slot][data-variant]` tags; in Play-UI the DeckOverlay--Play-UI wraps the slide in such a section so exactly one is in view. Hydrates ranks from `GET /api/slide-rank` on mount, posts optimistically on click, fails-soft in production builds. Rename to `SlideClassifierPill` is queued — 'classify' matches the cognitive act more accurately than 'rank' (the enum is a finite tag set, not an ordering).
sitemap/components/SlideRankPill.md -
SlideShell — shared per-slide chrome (padding, min-height, snap-align, optional consumer-provided mark)
Outer `<section>` that wraps a slide's content with the shared layout discipline: `min-height: 100vh`, fluid clamp-based padding, `scroll-snap-align: start`, flex-column body wrapper with content-max-width, optional vertical alignment + background variant. The original chroma version embedded `<ChromaMark>` directly; the shell version exposes `<slot name="mark">` so consumers plug their own mark (Wordmark, ChromaMark, HumainMark, etc.) — the shell stays brand-agnostic. Lifted from `chroma-decks/src/layouts/SlideShell.astro` on 2026-06-06.
sitemap/components/SlideShell.md -
lib/deck-overview — registry + filesystem walker; loadDeckOverview(deckSlug) returns DeckOverview with variants/slots/per-slide-file flags
Build-time data loader for landing dashboards. `loadDeckOverview(deckSlug)` returns a `DeckOverview` object — variant cards + per-variant slot lists + counts. Reads `decksRegistryPath` + `slotsRegistryPath` + `slidesComponentsRoot` from the shell's resolved options on `globalThis.__dididecksShellOptions`, so any client-site can call it without the shell knowing the consumer's import paths. Substantiation counts (people, headshots, investor firms, portfolio companies) from the chroma original were deliberately dropped — those are per-client substantiation layers; each client implements its own counts on top of this base if needed.
sitemap/lib/deck-overview.md -
Sitemap — Living Map of the DidiDecks Universal-Frontend-over-Client-Decks Architecture
A living mini-spec per artifact (route, component, per-slide component) across the dididecks-ai shell and its client-site consumers. Splits across two levels: this directory describes the *universal* shell artifacts inherited by every client deck; per-client overrides and consumer-authored artifacts live in each `client-sites/<client>/context-v/sitemap/`. Each entry is short, kept up-to-date with the running code, and cross-linked so an agent reading any one file can trace composition, theming inheritance, and the plan-of-record that produced it.
sitemap/README.md -
/api/slide-decompose — non-destructive stub generator for the Phase 1 → Phase 2 transition
Dev-only API route that writes an empty per-slide stub file at `{slidesComponentsRoot}/{variant}/{slot}-{slug}.astro` in the consumer's working tree. Non-destructive: refuses to overwrite, returns 409 if the file already exists. The stub is a minimal `<section data-slot data-variant></section>` with a generated-by header comment instructing the recreate-do-not-extract discipline (Phase 2 of the deck-iteration-workflow). Static Vercel builds never carry this route; file writes only happen against a local working tree.
sitemap/routes/api-slide-decompose.md -
/api/slide-rank — read + write per-slide classifier state into the consumer's audits file
Dev-only API route (`prerender = false`) that reads + writes the audit registry at the consumer's `data/audits/slides.json` (default path; configurable via the integration options). GET returns the full ranks map; POST upserts a single `{deckSlug, variantSlug, slot, status}` entry with `rankedAt` ISO timestamp + `rankedBy: 'founder'`. Status `'pending'` is the implicit default — never persisted; a POST with `status === 'pending'` deletes the existing entry. Fails-soft in production static builds (the route doesn't exist there, both GET and POST 404 — SlideRankPill catches and degrades to read-only).
sitemap/routes/api-slide-rank.md -
/data-assets/companies — reviewer audit of portfolio-company metadata + brand assets across every engagement layout
Static reviewer audit page that globs every `<consumer>/data/**/portfolio/*.md` and renders one row per portfolio company — name, slug, sector, homepage, the colocated trademark + favicon previews, confidence/status pills, and links into upstream sources. Companies are distinguished from People (which also live under `portfolio/`) by the *absence* of a `role_class` frontmatter field. Adapts to all three known data layouts: calmstorm's `data/firms/{firm}/portfolio/`, chroma's `data/investors/{firm}/portfolio/`, and humain's flat `data/portfolio/` operating-company variant. SSR'd (`prerender = false`) so it routes through the consumer's auth middleware — protects portfolio graphs from being public-by-accident.
sitemap/routes/data-assets-companies.md -
/data-assets/people — reviewer audit of team / advisor / portco-ceo metadata + headshots across every engagement layout
Static reviewer audit page that globs every `<consumer>/data/**/{team,portfolio}/*.md` and renders one row per person — name, slug, role_class, title, org, link chips (LinkedIn / Twitter / website), the colocated headshot preview, bio_short, confidence + status pills. People are distinguished from Companies (which also live under `portfolio/`) by the *presence* of a `role_class` frontmatter field. Adapts to all three known data layouts (calmstorm's `data/firms/{firm}/team/`, chroma's `data/investors/{firm}/team/` + flat `data/team/`, humain's flat `data/team/` + `data/portfolio/{co-slug}-ceo.md`). SSR'd (`prerender = false`) for auth gating.
sitemap/routes/data-assets-people.md -
/dev/icons — recurring design-review workbench
Originally a one-off Phase 4 review surface for the dual-surface icon pair on the TOC redesign. Founder picked Pair B 'Frameless glyphs' on 2026-05-17; rather than delete the route, the pattern was kept: a single /dev/* page per project that renders every candidate for a visual-primitive decision side-by-side at multiple sizes, on multiple backgrounds, inside the real composed context (chip-next-to-icon, drift case, missing-file dimmed case). Alternates live one directory deeper at `apps/deck-shell/src/components/icons/alternates/` and remain importable so the design history stays legible. Future icon families, chip variants, badge styles, button states extend this route with additional sections rather than spawning a new /dev/* route per decision.
sitemap/routes/dev-icons.md -
/play/[deckSlug]/[variantSlug]/ — variant-index redirect to slot 01
Enumerates every (deck, variant) pair from the consumer's deck registry and 302s to /play/{deck}/{variant}/01/. Today the redirect is unconditional; A++.1 will gate it on `SLOTS[variantSlug]?.length` and render a friendly 'no slots yet' panel for variants without entries (currently chroma's proto, enhanced-v1, enhanced-v2 — all return 404s after the redirect because `[slot]` only emits paths from SLOTS).
sitemap/routes/play-index.md -
/play/[deckSlug]/[variantSlug]/print/ — one-shot PDF export surface; renders the whole variant stacked for the browser print dialog
Print-styled route that renders every slot for a given (deck, variant) as a stacked sequence of SlideCanvas instances, page-broken with `page-break-after: always` per slide. No @page size override — the browser decides paper size; each SlideCanvas letterboxes inside that printable area via CSS-only container-query scaling (`cqi`/`cqb`). Reader prints via the browser dialog; PDF comes out as one slide per page. Static HTML/CSS, no JS — same constraint as Play-UI slides themselves, because runtime hydration would break the print render.
sitemap/routes/play-print.md -
/play/[deckSlug]/[variantSlug]/[slot]/ — single-slot Play-UI renderer with keyboard nav
Static route emitted for every slot in `SLOTS[variantSlug]`. Resolves the slot's `slug` from the registry, then dynamic-imports the per-slide component at `/src/components/slides/{variant}/{slot}-{slug}.astro` via `import.meta.glob` and renders it inside SlideCanvas; falls back to DecomposeFirstPlaceholder if the file doesn't exist. Today the route directly composes DididecksNav + DeckChrome + SlideCanvas inline; the target shape composes them via `DeckOverlay--Play-UI`, which also wraps the slide in `<section data-slot data-variant>` so SlideRankPill mounts work (closes A++.2 structurally).
sitemap/routes/play-slot.md -
/toc/[deckSlug]/[variantSlug]/ — bird's-eye-view audit dashboard with rank pills + scaffold buttons
Static table-of-contents route emitted for every (deck, variant) pair in the consumer's `DECKS` registry. Renders one row per slot from `SLOTS[variantSlug]`, each row showing the slot number, title, five rank pills (mirroring SlideRankPill's enum), a scaffold button that POSTs to /api/slide-decompose, and — when the per-slide file exists — a `[view →]` link to `/play/{deck}/{variant}/{slot}/`. The TOC is the read-only-on-deploy / read-write-in-dev audit surface; it complements (does not replace) the in-place SlideRankPill on scroll-deck routes.
sitemap/routes/toc.md -
/toc/[deckSlug]/ — deck-level dual-surface review matrix (one row per slot × one column per variant)
The deck-level audit surface — distinct from `/toc/[deckSlug]/[variantSlug]/` which is the per-variant TOC. This route renders the full variants × slots matrix with dual-surface (Scroll + Play) ratings per cell, per-variant shippability rollups in the column headers, and a per-row drift indicator (`≠`) when scroll and play disagree. Effectively just embeds the `DeckMatrix` component with `showNav={true}` so the variant-chooser pills sit at the top. Reads from the same audits registry the per-slot SlideRankPill writes to — values match what reviewers actually clicked.
sitemap/routes/toc-deck.md -
runtime/mode-switcher — TS factory createModeSwitcher({client, defaultMode, respectSystemPreference}); per-client localStorage namespace
Three-mode state machine ('light' | 'dark' | 'vibrant'). Rewritten in TS as a factory; called once per deployment with the consumer's `client` value, which becomes the localStorage key prefix (`{client}:mode`) so multi-deck-on-one-domain scenarios don't collide. Installs the singleton on `window.modeSwitcher` so multiple `ModeToggle` instances on the same page share state. Sets `data-mode` on `<html>`; dispatches `mode-change` custom event so ARIA labels stay in sync. Lifted from `chroma-decks/src/utils/mode-switcher.js` on 2026-06-06 (the chroma original was JS; the shell version is TS with config + factory; chroma now consumes via a top-level side-effect shim that calls the factory with chroma's config).
sitemap/runtime/mode-switcher.md -
example-vc
agent-skills/crawl-fetch-ingest/examples/example-firm.md
file-transporter 1 doc
filestarter 1 doc
fullstack-vc 27 docs
-
Migrate Participant Stacks from Markdown to Turso with DB→Markdown Materialization
Stacks (current / aspirational / abandoned) live today in src/content/participants/<handle>.md and persist via GitHub App commits on every save — the same pattern the polling blueprint v2 §8.1 explicitly retired for time-sensitive data because of commit-history pollution, PEM brittleness, and concurrent-edit fragility. This task moves stacks to Astro DB on Turso as the authoritative store, with a periodic snapshot back to markdown so the build-in-public visibility stays intact. Generalizes the same materialization motion polling already uses (v2 §9), bringing two surfaces under one principled pattern.
tasks/Migrate-Participant-Stacks-from-Markdown-to-Turso-with-Materialization.md -
Pre-create Turso User Rows from External Rosters and Fuzzy-Bind to Public Participant Profiles
Build the Turso-side ingest + fuzzy-match layer that lets us pre-create User rows from external sources (Zoom exports, Luma RSVPs, conference registrations) with full email PII safely sequestered in the private database, then auto-bind those rows to OAuth sign-ins by email and offer high-confidence manual claims against public participants/*.md profiles. Closes the loop between 'we know they registered' and 'they have a face on the site.'
tasks/Pre-create-and-Fuzzy-Bind-Users-from-External-Rosters.md -
Redesign Stack Builder with Toggleable Multi-Column Layout and Cross-Column Drag-Drop
Today's StackBuilder is a single-column 'Current stack' editor — aspirational and abandoned entries are only reachable by scrolling far below and editing the markdown frontmatter by hand. Redesign as a wider three-bucket canvas with pill toggles for which buckets are visible, two-up side-by-side view when two are active, and drag-and-drop to move tools across buckets. Cross-column moves reshape data (notes ↔ intent ↔ reason) with inline prompts so nothing is silently lost. Mobile gracefully degrades to a tap-to-move modal.
tasks/Redesign-Stack-Builder-with-Multi-Column-Drag-Drop.md -
Wire Google Workspace OAuth as a Third Identity Provider
Env scaffolding for Google OAuth was added (uncommitted .env.example diff + real credentials in .env), but the code wiring was never written. This task implements the routes, session-payload union widening, header tooltip row, login button, and roster matching to bring Google to parity with the GitHub + LinkedIn providers — highest-leverage move before the May 27 All-Hands since most VC attendees convert better on Workspace than on either existing provider.
tasks/Wire-Google-Workspace-OAuth-Provider.md -
Auth + Identity System Worked, but the Post-Login UX Silently Bounces Users
Of 17 users who completed OAuth on production, only 2 produced any in-app activity. The auth/identity layer (Turso User table, dual-provider linking by email) is correct — the failure is downstream: a back-button-triggered raw 400, a LinkedIn flow with no settings/edit page, a public profile route that 404s for anyone without a participants markdown file, and no error log to see any of it. Captured from a real user report (Marcos Polanco, 2026-05-09) and a Turso audit of all 17 rows.
issue-resolutions/Auth-Identity-System-Worked-but-UX-Failed-Silent-Bounces.md -
Optimize for Localized OpenGraph Metadata and Banner Image with Overlay
We want WhatsApp / iMessage / Twitter shares of any project page to surface a banner image that's visibly *about that project* — title baked in, not just a generic site-wide image. Today we have project-specific title and description in the OG meta tags but a shared placeholder image. Documents the four paths to a fix and the trigger that should reopen this work.
issue-resolutions/Optimize-for-Local-OpenGraph-Metadata-and-Image-w-Overlay.md -
Page Spec — projects/index.astro & projects/[slug].astro
A specification for the FullStack VC Projects page (gallery + detail), the supporting content collection, the Hero and Project Gallery section components, and the Jumbo Popdown that surfaces projects from the site header.
sitemap/pages/Page__projects-index.astro.md -
What the room has told us
narratives/2026-05-27_monthly-all-hands/02a_data-from-previous-surveys.md -
fullstack-vc/issue-resolutions/troubleshooting-ssg-authentication-and-port-to-ssr-w-database
issue-resolutions/Troubleshooting-SSG-Authentication-and-Port-to-SSR-w-Database.md -
Cover
narratives/2026-05-27_monthly-all-hands/01-cover.md -
What this is
narratives/2026-05-27_monthly-all-hands/02-what-this-is.md -
Format
narratives/2026-05-27_monthly-all-hands/04-format.md -
Create your account
narratives/2026-05-27_monthly-all-hands/05a_create-your-account.md -
The LPs as Co-Investors Conundrum
narratives/2026-05-27_monthly-all-hands/05b_lp-conundrum.md -
From Yes to Win
narratives/2026-05-27_monthly-all-hands/05c_from-yes-to-win.md -
Cortado Demo — Claude Teams for Firm Impact
narratives/2026-05-27_monthly-all-hands/06a_cortado-claude-teams.md -
Toby Demo — OpenClaw + Obsidian for Pipeline
narratives/2026-05-27_monthly-all-hands/06b_toby-openclaw-obsidian.md -
Track 1 · Internal Conviction → IC
narratives/2026-05-27_monthly-all-hands/07-track-internal-to-ic.md -
Track 2 · Syndicate to VCs
narratives/2026-05-27_monthly-all-hands/08-track-syndicate-to-vcs.md -
Track 3 · Offer to LPs
narratives/2026-05-27_monthly-all-hands/09-track-offer-to-lps.md -
How the breakouts run
narratives/2026-05-27_monthly-all-hands/10-breakout-mechanics.md -
Are you willing AND able?
narratives/2026-05-27_monthly-all-hands/11-willing-and-able.md -
Close
narratives/2026-05-27_monthly-all-hands/12-close.md -
fullstack-vc/narratives/2026-05-27_monthly-all-hands/readme
narratives/2026-05-27_monthly-all-hands/README.md -
fullstack-vc/sitemap/sections/section__areas-of-venture
sitemap/sections/Section__Areas-of-Venture.md -
Build Section-Composed Decks Alongside Reveal — with Live Theme + Mode as a Hard Constraint
Reveal.js stays. It works fine for the decks it works fine for. But fullstack-vc also needs a second deck paradigm — narrative markdown per slide, composed as <section> components under a PageAsDeckWrapper, with multiple variants from one narrative source — that produces designs with real elegance and inherits the site's three-mode theme system (light / dark / vibrant) live and always. The first concrete deck under this paradigm ports data displays from prior session surveys (April 29 launch JSON, May 27 LP-pulse counts, breakouts roster) as content blocks the section components compose against.
specs/Build-Section-Composed-Decks-with-Live-Theme-Mode.md -
A Two-Perspective How-To Engine — Use-Cases ✕ Tool-Uses, Built on LFM (Not Starlight)
VCs arrive two ways: 'I need to automate dealflow' (a use-case) and 'I've heard I need Hermes Agent' (a tool). The same how-to should be reachable from both doors. This spec defines a docs engine on top of @lossless-group/lfm that renders one body of how-to content through two parallel navigation perspectives — with left-nav, right-hand TOC, prev/next pagination, wikilinks, callouts, citations, and video/GIF embeds — and deliberately does NOT adopt Astro Starlight.
specs/Two-Perspective-How-To-Docs-Engine-on-LFM.md
grab-reference 1 doc
humain-vc-decks 3 docs
-
Humain Ventures — Brand Extraction & Deck Redesign Notes
explorations/Humain-Brand-and-Deck-Notes.md -
Humain Ventures · Fund I — Deck Content (canonical)
narratives/Humain-Deck-Content.md -
Install Auth Surface — port from chroma-decks / calmstorm-decks pattern
plans/Install-Auth-Surface-from-Calmstorm-Pattern.md
id-didi-sh 1 doc
image-gin 6 docs
-
Prompt — Add a New Model Provider to Image Gin
The agent-facing instruction for adding a new image-generation provider to Image Gin. Hands the work to a coding agent with the canonical blueprint to follow, the case-study prior art (Recraft, Ideogram, Magnific), and the exact files to touch — so the agent isn't reinventing the shape on every new vendor.
prompts/Add-New-Model-Provider.md -
Blueprint — Add a New Image-Generation Provider (case study: Ideogram)
blueprints/Add-New-Image-API-to-Providers.md -
image-gin/chore-to-update-all-dependencies
Chore-to-Update-All-Dependencies.md -
Plan — Bring Image Gin up to Obsidian Community-Plugin Publishing Standards
plans/2026-05-03_Assuring-Obsidian-Community-Plugin-Requirements.md -
Plan — Final ObsidianReviewBot cleanup round for image-gin v0.2.x
plans/2026-05-10_Final-ObsidianReviewBot-Cleanup-Round.md -
This Is an Obsidian Plugin — Read the Obsidian API Docs
reminders/This-is-an-Obsidian-plugin-Read-Obsidian-API-Docs.md
lfm 2 docs
-
Workspace vs JSR for LFM Consumers
Why most consumer sites should pin @lossless-group/lfm to JSR while exactly one acts as the local workspace sandbox — and the boring deploy-host failure mode that forces the discipline.
Workspace-vs-JSR-for-LFM-Consumers.md -
Render AST in Debug
Exploration of AST structure at each stage of markdown processing to understand how to handle callouts
Render-AST-in-Debug.md
lmstud-yo 1 doc
lossless-decks 5 docs
-
Born from lived experience — Michael Staton, Convener
slides-content/lossless-group--born-from-lived-experience.md -
Firm-Wide Emergent Practices — Discovery, not prescription
slides-content/lossless-group--firm-wide-emergent-practices.md -
Ideal Engagement — One week on-site, then drag down, then white whales
slides-content/lossless-group--ideal-engagement.md -
Credibility — Two years of applied AI for clients
slides-content/lossless-group--credibility.md -
lossless-decks/slides-content/_template
slides-content/_TEMPLATE.md
lossless-monorepo 21 docs
-
VC Self-Host Stack as a Pseudomonorepo (and a Paired Study)
We have two orphan dirs at the monorepo root — twenty-crm/ and twenty-deployment/ — that hint at a larger pattern: a curated, deployable open-source tech stack a VC firm could self-host instead of paying SaaS rent. This exploration asks where that pattern should live and how we'd serve clients from it.
explorations/VC-Self-Host-Stack-as-Pseudomonorepo.md -
Dependabot Alerts — Triage Playbook for Lossless Repos
GitHub Dependabot's alert UI is opaque enough that we re-derive 'what does this actually mean for us' every time a new repo gets a noisy alert badge. This is the standing playbook: what the alerts usually are (almost always dev-toolchain transitives that never ship to users), how to diagnose what's real, and the bulk-dismiss script with categorized rationales that cleared 86 alerts across three Obsidian plugins on 2026-05-17 in roughly five minutes.
issues/Dependabot-Alerts-Triage-Playbook-For-Lossless-Repos.md -
Maintain status discipline across context-v files
A periodic sweep through every context-v/ directory in a repo, promoting status fields to match reality. Plans that shipped become Shipped (with date_first_published). Plans that half-shipped become Partially-Shipped (with a Remaining-work section). Plans explicitly held become Deferred (with a deferral_note). The directory stays loadable: an agent or human landing cold can read status: Draft and trust that it means nothing has happened yet.
habits/Maintain-Status-Discipline-Across-Context-V-Files.md -
Changelog entries duplicated across augment-it/changelog/ and content/changelog--laerdal/
Eleven backfilled augment-it changelog entries currently live in two places. Either location can be the source of truth — but right now both are, and updates have to be made twice.
issues/Changelog-Duplicated-Across-Splash-And-Laerdal-Collection.md -
Deduplicate the augment-it changelog between the splash and the Laerdal collection
plans/Deduplicate-Augment-It-Changelog-Across-Splash-And-Laerdal.md -
Port Astro Deck Sections to Slides
Decision rules and the wrapper-import warning for taking working Astro scroll-deck sections and producing fixed-aspect 16:9 slide files that play left-to-right like Keynote/PPT — without leaking adaptations back into the scroll deck. The two are different artifacts; treating them as one is the trap we keep falling into.
prompts/Port-Astro-Deck-Sections-to-Slides.md -
Maintain the llms.txt standard across significant sites & splash pages
Every Lossless Group site that publishes a substantive content collection serves /llms.txt (a markdown link index) and /llms-full.txt (the concatenated raw markdown) at its root, regenerated on every deploy, so LLM crawlers and agentic tools can ingest the corpus in one fetch instead of crawling 500 HTML pages.
habits/Maintain-LLM-Txt-Standard-across-Significant-Sites-&-Splash-Pages.md -
Maintain sitemap.xml and robots.txt across significant sites & splash pages
Every Lossless Group site that wants to be found ships an auto-generated sitemap (via @astrojs/sitemap), a robots.txt with an absolute Sitemap: pointer, and a discoverability link tag in <head> — so search engines can crawl what we publish without us hand-maintaining a URL list.
habits/Maintain-Sitemap-and-Robots-across-Significant-Sites-&-Splash-Pages.md -
Explore: GitHub API for Live KPIs — Credibility Without Stars
We average 60+ commits/day per person across ~9 repos, ship 4,400+ content files mapping 1,600+ tools, and document our methodology in 397 context-v files. We do not have 50K stars. This exploration maps what we can pull from GitHub (and the local content vault) to tell a credibility-by-shipping story instead of a popularity story.
explorations/Explore-GitHub-API-for-Live-KPIs.md -
Explore: Using PRs More — Why a Solo Dev Should Bother
We're mostly solo on any given thread, so PRs feel like ceremony for an audience of one. But PRs aren't really about review — they're about turning tiny working commits into a clean shipped unit, providing a stable URL for changelogs, gating on CI, and giving AI co-developers an audit trail. This explores what a minimum viable PR practice looks like when there's only one person on one thing at a time.
explorations/Using-PRs-More.md -
Maintain a Github Splash Page for each Repo
Every Lossless Group repo ships a small Astro site under splash/ that turns the repo into a free GitHub Pages landing page — hero, curated gallery, changelog and context-v rendering — without committing to a real marketing surface too early.
habits/Maintain-a-Github-Splash-Page-for-each-Repo.md -
Maintain a Current README and other Docs
habits/Maintain-a-Current-README-and-other-Docs.md -
Unlock GitHub API for Content Augmentation
plans/Unlock-GitHub-API-for-Content-Augmentation.md -
Maintain an Astro Knots site for Major Projects
habits/Maintain-an-Astro-Knots-site-for-Major-Projects.md -
lossless-monorepo/habits/maintain-projects-collections-on-lossless-site
habits/Maintain-Projects-Collections-on-Lossless-Site.md -
lossless-monorepo/plans/put-lossless-flavored-markdown-on-the-lossless-group
plans/Put-Lossless-Flavored-Markdown-on-The-Lossless-Group.md -
lossless-monorepo/plans/refactor-memopop-site-to-splash
plans/Refactor-MemoPop-Site-to-Splash.md -
lossless-monorepo/plans/tidy-root-with-pseudo-monorepos
plans/Tidy-Root-with-Pseudo-Monorepos.md -
lossless-monorepo/prompts/implement-deeper-analytics-tracking
prompts/Implement-Deeper-Analytics-Tracking.md -
lossless-monorepo/prompts/setup-analytics-across-sites
prompts/Setup-Analytics-Across-Sites.md -
Pseudomonorepo Settings — Fence Each Project from Parent pnpm Workspaces
reminders/Pseudomonorepo-Settings.md
lost-in-public 189 docs
-
Running the Latest and Greatest LLM Locally
Step-by-step guide for installing and configuring local LLMs—including Ollama, LiteLLM, Fabric, and Perplexica—for modern AI workflows and toolchains.
issue-resolution/Running the latest and greatest LLM locally.md -
Enhance Visualizations with Use of Formats
explorations/Enhance-Visualizations-with-Use-of-Formats.md -
lost-in-public/explorations/self-hosting-multi-site-analytics-platforms
explorations/Self-Hosting Multi-Site Analytics Platforms.md -
Update an Older Codebase one Dependency at a time.
refactors/Upgrade-an-Older-Codebase-Dependencies.md -
Aggregating GitHub Statistics
Creating aggregate stats on GitHub commits using the gh CLI and GitHub APIs.
issue-resolution/Aggregating-GitHub-Stats.md -
Refactor Changelog Content By Project
refactors/Refactor-Changelog-Content-By-Project.md -
Maintain an Elegant Markdown and Extended Markdown Render Pipeline
blueprints/Maintain-Lossless-Markdown-and-Extended-Markdown-Render-Pipeline.md -
Integrate a Sources content collection.
Enhance our content through a new collection of sources, including books, people, events, lectures, media, meetings, reports, source extracts, ugc communities, and more.
prompts/render-logic/Introduce-Sources-as-Accessible-Content.md -
Be Creative with this Marketing Copy
Here's some messaging we want some creative thinking around. Expand on the messages and create a UI with good information design.
prompts/workflow/Be-Creative-with-this-Marketing-Copy.md -
Render AST in Debug
Exploration of AST structure at each stage of markdown processing to understand how to handle callouts
explorations/Render-AST-in-Debug.md -
Generate Investment Memo for Portfolio Company
Create investment opportunity briefs that match Hypernova's analytical voice, format, and depth using AI-assisted generation with structured inputs and validation.
prompts/workflow/Generate-Investment-Memo-for-Portfolio-Company.md -
Multi-Agent Orchestration for Investment Memo Generation
An exploration into using AI supervisors and specialized agents to generate high-quality content and documents.
explorations/Multi-Agent-Orchestration-for-Investment-Memo-Generation.md -
Broken YAML Key Replacement Workflow
Documenting a critical workflow bug and its resolution for YAML key replacement in Markdown frontmatter.
issue-resolution/Broken-YAML-Key-Replacement-Workflow.md -
Computing Entry Object Values in Astro
A practical guide to ensuring content collections in Astro have complete and valid entry objects for reliable builds.
issue-resolution/Computing entry object values in Astro.md -
Conditional Console Logging as a Standard Practice
Establishing a DRY, configurable approach to console logging for transparent debugging and maintainability.
issue-resolution/Conditional Console Logging.md -
Rendering AST Through a Thoughtful Transformation Pipeline
Achieving robust component-based markdown rendering by optimizing the AST transformation pipeline, fixing blockquote/callout handling, and leveraging the unified ecosystem for efficiency.
issue-resolution/Rendering-AST.md -
Rolling back in time with BTRFS
issue-resolution/Rolling-back-in-time-with-BTRFS.md -
Fixing Markdown Frontmatter Default Values
Resolving issues with missing frontmatter fields not being populated with template defaults
issue-resolution/Fixing-Markdown-Frontmatter-Default-Values.md -
Fixing MOC Content Filtering Across Multiple Collections
Resolving client reader sidebar issues when Map of Content files reference articles from different content collections with mismatched paths and titles
issue-resolution/MOC-Multi-Collection-Filtering-Fix.md -
Maintain Figma Object Embeds Using Embed Kit
blueprints/Maintain-Figma-Object-Embeds-using-Embed-Kit.md -
Multi-Site Astro Starter Kit Architecture
Exploration of building a comprehensive Astro starter kit optimized for rapid deployment of multiple marketing sites with environment-driven customization
explorations/Multi-Site-Astro-Starter-Kit-Architecture.md -
Maintain an Elegant Open Graph System
A scalable, consistent architecture for Open Graph/Twitter share metadata across multi-site Astro projects.
blueprints/Maintain-an-Elegant-Open-Graph-System.md -
Optimizing Share Functionality Across Content
Search and share are the only scalable organic growth engines. Optimizing some aspects are easy.
issue-resolution/Optimizing-Share-Functionality-Across-Content.md -
Repurpose Functionality from React to Astro
When you've built functionality several times it can feel like a slog to rewrite. Let AI Code Generators do it Step by Step.
prompts/workflow/Repurpose-Functionality-from-React-to-Astro.md -
Conditional Component Rendering in Layout Pipelines
Implement flexible layout component rendering with optional parameter controls for InfoSidebar and TableOfContents suppression
blueprints/Maintain-Conditional-Components-on-Render.md.md -
Maintain a Map of Content Paradigm
Implement MOC directive-driven content capacity management for centralized, markdown-native content curation
blueprints/Maintain-a-Map-of-Content-Paradigm.md -
YAML Frontmatter Corruption Correction
Automated tool for identifying and repairing corrupted YAML frontmatter across the content library
prompts/data-integrity/Isolate-Content-Wide-YAML-Corruptions.md -
Jumbotron Popdown Patterns
Design and implementation patterns for consistent jumbotron popdown menus in the Lossless UI.
blueprints/Jumbotron-Popdown-Patterns.md -
Foundational Workflow In The Terminal And Command Line
explorations/Foundational Workflow in the Terminal and Command Line.md -
Accessing Figma through a Windsurf MCP Server
Interact with Figma Designs while building an application, straight from the IDE
explorations/Accessing Figma through a Windsurf MCP Server.md -
Automating Content Generation With Local LLMs
explorations/Automating Content Generation with Local LLMs.md -
Creating a Custom GPT with OpenAI
explorations/Creating a Custom GPT with OpenAI.md -
Exploring Model Context Protocol SDK
Tinker with the Model Context Protocol SDK created by Anthropic
explorations/Exploring Model Context Protocol SDK.md -
Finding an Email Newsletter API that Supports Multiple Domains
Most email newsletter services boast the deliverability and the large number of emails. But what if you just need to send a limited number of emails but support multiple domains?
explorations/Finding an Email Newsletter API that supports Multiple Domains.md -
Using MCP Servers to Speed-up Astro Development
What kind of MCP Servers actually speed up Astro Development?
explorations/Using-MCP-Servers-to-Speed-up-Astro-Development.md -
Creating A Flavored Syntax Parsed To UI
explorations/Creating a flavored syntax parsed to UI.md -
Improvise a few Creative Component Variants
Generate a few variants of a web component with similar functionality and consistent with the overall design, style, theme, and mode using CSS variables.
blueprints/Improvise-a-few-Creative-Component-Variants.md -
Maintain Directives In Extended Markdown Render Pipeline
Directives bring MDX like component rendering using special extended markdown syntax.
blueprints/Maintain-Directives-in-Extended-Markdown-Render-Pipeline.md -
Maintain Embeddable Slides
blueprints/Maintain-Embeddable-Slides.md -
Using Obsidian To Manage Markdown Based Content Collections For Static Site Generation Frameworks
explorations/Using Obsidian to manage Markdown-based Content Collections for Static-Site Generation Frameworks.md -
Using Test Coverage to Constrain AI Code Assistants
explorations/Using-Test-Coverage-to-Constrain-AI.md -
Create Storytelling Patterns through sequences of Markdown Files
Using an ordered list of markdown files, create a UI that tells a story of moving from one file to the next through the series.
prompts/user-interface/Create-Storytelling-Patterns-through-sequences-of-Markdown-Files.md -
Reminder of Specification Template and Guidelines for AI Code Assistants
Guidlines and templates only work if you use them.
reminders/Remind-a-Model-of-Specification-Guidelines.md -
Refactor Reference Lists into Reference Grid
Refactor reference lists into a grid-based component
refactors/Refactor-Reference-Lists-into-Reference-Grid.md -
Nested Scroll and Keyboard Behavior Conflicts in Interactive UI Components
Resolving conflicts between parent and child component event handling when nested interactive elements compete for mouse and keyboard control
issue-resolution/Nested-Scroll-and-Keyboard-Behavior-Conflicts.md -
Creating an Astro Collection from Multiple Directory Paths
Solving the challenge of combining multiple portfolio directories into a single unified collection
issue-resolution/Multi-Path-Portfolio-Collection-Setup.md -
Remark Plugin Implementation Plan for Astro Content
Create a custom remark plugin to enhance markdown processing in Astro with extended syntax features
prompts/render-logic/Remark-Plugin-Implementation.md -
Getting Through CORS
A practical guide to improving cross-origin data rendering and troubleshooting CORS issues in modern web development.
issue-resolution/Getting through CORS.md -
Handling Unexpected API Responses
Robust strategies for normalizing and integrating unpredictable API data into observer pipelines and frontmatter logic.
issue-resolution/Handling Unexpected API Responses.md -
Move functionality and style of Concepts and Vocabulary into specific components
We should use astro components as best we can, and try to keep styles managably within their own components
prompts/code-style/Move-Functionality-and-Style-to-Specific-Components.md -
Fetch Open Graph Data from API
Create a Node.js script to process Markdown files and fetch OpenGraph metadata and screenshots from external APIs
prompts/data-integrity/Fetch-Open-Graph-Data-from-API.md -
Fetch Open Graph Data from API
Create a Node.js script to process Markdown files and fetch OpenGraph metadata and screenshots from external APIs
prompts/data-integrity/Implement-Open-Graph-Data-from-API-Obsidian-Plugin.md -
Add a Site Preview to ToolKit Tool Card
Make your site more useful by adding a site preview using HTML iFrames and OpenGraph.io
prompts/user-interface/Add-a-Site-Preview-to-ToolKit-Tool-Card.md -
Ask a Model API to Perform a Task via API
Guidelines for making API calls to LLM services like Claude, GPT-4, and Groq
prompts/workflow/Ask-a-Model-API-to-perform-a-task-via-API.md -
Ask Generative AI Model to Generate a Style
Generate a custom style object for image requests using a Generative AI model. This prompt is for scripting and API integration workflows.
prompts/workflow/Ask-Generative-AI-model-to-generate-a-Style.md -
Introduce a New Feature to the Observer System
Enhance the observer system by introducing new functionality.
prompts/workflow/Introduce-a-New-Feature-to-Observer-System.md -
Ask a Model API to Perform a Task via API
Guidelines for making API calls to LLM services like Claude, GPT-4, and Groq
prompts/workflow/Write-an-AI-Model-request-Script.md -
Refactor a really long Obsidian Modal file.
Creating modular maintainable code for Obsidian Plugin Modals
refactors/Refactor-Obsidian-Modals.md -
Frontmatter consistency through filesystem observer
Leverage the file system libraries to observe directories for new files, insert frontmatter templates.
prompts/data-integrity/Use-Filesystem-Observer-to-Assert-Frontmatter.md -
Create a Basic Changelog
Guidelines for creating and maintaining a structured changelog
prompts/workflow/Create-a-Basic-Changelog.md -
How to manage gnarly routing with Static Site Generators
Guidlines for how to manage dynamic and static routing with Static Site Generators
reminders/Gnarly-Routing-with-Static-Site-Generators.md -
Maintain an Environment-based Build System
Build across environments, including different deployments, using environment variables and configuration files.
reminders/Maintain-an-Environment-based-Build-System.md -
Repurpose Functionality Found Elsewhere into an Obsidian Plugin
When you've built functionality several times it can feel like a slog to rewrite. Let AI Code Generators do it Step by Step.
prompts/workflow/Repurpose-Functionality-Found-Elsewhere-into-Obsidian-Plugin.md -
Technical Specification - Custom Code Block Rendering in Astro
Enhance markdown rendering with specialized components for custom code languages, ensuring graceful fallbacks and maintainable styling
prompts/render-logic/Handle-Custom-Codeblocks-in-Astro.md -
Implement a Comprehensive Code Block Rendering System in Astro
Brief description of the prompt functionality and purpose
prompts/render-logic/Handle-Custom-Codeblocks-in-Astro-Comprehensive.md -
Create a Canvas UI of our Content and Data Models
Visualize content and data models using JSON Canvas
prompts/user-interface/Create-a-Canvas-UI-of-our-Content-and-Data-Models.md -
Create a Changelog UI
Design and implement a modern, user-friendly changelog interface that handles both code and content changes
prompts/user-interface/Create-a-Changelog-UI.md -
Reintroduce something that worked.
Speed up time to solution by asking an AI Code Assistant to draw from old code.
prompts/workflow/Reintroduce-something-that-Worked.md -
Fire up the Observer
Ready to automate? Learn how to launch the Observer system for seamless citation and frontmatter processing across your content library.
reminders/Fire-up-the-Observer.md -
Integrate citations format and unique Hex into filesystem observer
Leverage Node.js filesystem APIs to monitor content directories, automatically transform citations into unique Hex values and create or update Footnotes section.
prompts/data-integrity/Integrate-Citations-Format-Hex-into-Observer.md -
Fix: Author Metadata Not Rendering on Custom Collection Pages
Resolve incomplete data propagation in a dynamic routing component.
issue-resolution/Fetch-Metadata-while-Rendering.md -
Refactor Plan: Consolidate Callout Processing to Pipeline Architecture
refactors/Extended-Markdown-Rendering-Consolidation.md -
Implement Client-Specific Content Routing in Astro
Create dynamic routes for client-specific content while maintaining existing general content structure
reminders/Maintain-Conditional-Client-Specific-Content-Paths.md -
Implement a specific task described in this Prompt as part of larger specification
Specifications are too large to use as prompts. Prompts are missing the larger context. Resolve the two by using both a Prompt and a Specification.
prompts/workflow/Implement-a-Specific-Task-as-Part-of-Larger-Specification.md -
Maintain Consistent Debugging Conventions
Debugging is a critical part of our development process. We should maintain consistent debugging conventions across all our code.
reminders/Maintain-Consistent-Debugging-Conventions.md -
Create a New Layout for an Existing Content Collection
Use existing logic and content, already working, to create and implement a new layout design.
prompts/user-interface/Create-a-New-Layout-for-Existing-Content-Collection.md -
Integrate a new content collection to our content rendering system.
Enhance our content base with a new collection of content.
prompts/render-logic/Integrate-Collection-into-Site.md -
Ways We Avoid Hard Validation
Prevent build failures and gracefully handle frontmatter inconsistencies.
reminders/Ways-We-Avoid-Hard-Validation.md -
Cursor and Claude 3.7 go Overkill with Regex & Validation
Diagnosing the pitfalls of excessive regex and validation logic in collaborative AI-powered workflows.
issue-resolution/Cursor and Claude 3.7 went overboard on Regex & Validation.md -
Fire up the Observer
Ready to automate? Learn how to launch the Observer system for seamless citation and frontmatter processing across your content library.
prompts/render-logic/Integrate-Collection-into-Observer-System.md -
Grid Layout Centering with Responsive Breakpoints
Solving complex CSS grid layout issues with simplified media queries
issue-resolution/Grid-Layout-Centering-with-Responsive-Breakpoints.md -
Ask Local LLM to be a Copywriter and generate content and metadata.
Use a local LLM to generate content and metadata for Markdown files in a content directory. This prompt is for scripting and content automation workflows.
prompts/workflow/Ask-Local-LLM-to-Be-a-Copywriter.md -
Persistent File Processing State in Observer
Assure the FileSystemObserver has a persistent file processing state, and also resets the state upon initialization and shutdown.
issue-resolution/Persistent-File-Processing-State-in-Observer.md -
Enhanced Filesystem Observer with Prompts and Specifications Support
Extend the filesystem observer to monitor prompts and specifications directories, validating frontmatter against templates and preparing for publication
prompts/data-integrity/Enhanced-Filesystem-Observer-with-Prompts-Support.md -
Comprehensive AST Transformation Pipeline
A robust approach to AST transformations inspired by astro-big-doc and content-structure patterns
prompts/render-logic/Render-Markdown-Deliberately-from-Inspiration.md -
Rendering Extended Markdown through AST
An alternative approach to rendering callouts and citations by working directly with the AST nodes
prompts/render-logic/Rendering-Extended-Markdown-through-AST.md -
Consolidate Multiple Documentation Sources into One Source
Consolidate multiple documentation sources into a single, cohesive source.
prompts/workflow/Consolidate-Multiple-Documentation-Sources-into-One-Source.md -
The Simplified Observer Logic
Clarify and streamline the Observer’s orchestration logic—ensuring every subsystem, expectation, and write operation is perfectly sequenced.
reminders/The-Simplified-Observer-Logic.md -
Use Safe Syntax in Mermaid Charts
Assure your Mermaid Charts render by avoiding unsafe characters and syntax while writing technical documentation
reminders/Use-Safe-Syntax-in-Mermaid-Charts.md -
An Exhaustive list of content YAML patterns.
Never repeat yourself—reference this comprehensive guide to all frontmatter YAML patterns for bulletproof data integrity and automation.
reminders/YAML-Patterns--Exhaustive-Cases.md -
Dynamic Image Masking Control in FeatureSideImage Component
Implementing flexible image masking with configurable dimensions via JSON data
issue-resolution/Dynamic-Image-Masking-Control.md -
Implement a Comprehensive Mermaid Chart Rendering System in Astro
Brief description of the prompt functionality and purpose
prompts/render-logic/Handle-Mermaid-Codeblocks-in-Astro.md -
Extending Astro Markdown with Remark and Rehype Plugins
How to enhance Astro's Markdown pipeline by integrating custom Remark and Rehype plugins for advanced content processing.
issue-resolution/Extend-with-Remark-and-Rehype-Plugins.md -
Getting Astro Collections to Work on Messy Frontmatter
How to configure Astro content collections to handle Markdown files with inconsistent or incomplete frontmatter, using .passthrough and transform for robust schema handling.
issue-resolution/Getting Astro Collections to work on Messy Frontmatter.md -
How Micromark Handles Markdown and the AST
A deep dive into how Micromark tokenizes Markdown and how the AST is built by higher-level utilities in the remark/unified ecosystem.
issue-resolution/How-Micromark-Handles-Markdown-AST.md -
How remark-gfm Renders Tables
A technical deep dive into how the remark-gfm plugin parses, transforms, and renders Markdown tables in the unified ecosystem.
issue-resolution/How-Remark-GFM-renders-Tables.md -
Managing Complex Integrations Through Git
Solutions and essential commands for managing complex Git integrations, especially in monorepos with submodules and loosely-coupled architectures.
issue-resolution/Managing complex integrations through Git.md -
Obsidian Stuck in Regex Memory Hang
Diagnosing and resolving a persistent regex-induced freeze in Obsidian, including hidden file investigation and advanced directory tree commands.
issue-resolution/Obsidian stuck in Regex memory hang.md -
Preventing Infinite Loops in Observers
Strategies and atomic patterns for preventing infinite loops and redundant writes in observers, with robust frontmatter repair and idempotency.
issue-resolution/Preventing Infinite Loops in Observers.md -
Preventing Infinite Loops in RemindersWatcher
Comprehensive breadcrumb and technical guide for debugging and resolving infinite loop issues in the RemindersWatcher observer system, with inspector-only enforcement and atomic property aggregation.
issue-resolution/Preventing-Infinite-Loops-in-RemindersWatcher.md -
ReferenceGrid Layout Issue Resolution (CSS vs Tailwind)
Troubleshooting and resolving the ReferenceGrid component's layout issue—switching from custom CSS/media queries to Tailwind utilities for robust responsive grids.
issue-resolution/ReferenceGrid-Layout-Issue.md -
Setting up Rehype to Better Parse Markdown
Implementing a custom unified pipeline with remark and rehype for Astro Flavored Markdown, solving file reference and plugin integration issues.
issue-resolution/Setting-up-Rehype-to-Better-Parse-Markdown.md -
Showing Hidden Directories in Tree Output
How to configure the `tree` command to display hidden directories and files when visualizing project folder structures.
issue-resolution/Showing Hidden Directories in Tree Output.md -
Tame Generative AI with Rule Sets
Canonical rules and technical conventions for controlling, documenting, and collaborating with code-generating LLMs in complex TypeScript/Astro projects.
issue-resolution/Tame Generative AI with rule sets.md -
Troubleshooting Rendering Citations
Resolving issues with citation rendering in Markdown pipelines—strategies for AST transformation, plugin fallback, and robust user experience in Astro/Remark environments.
issue-resolution/Troubleshooting-Rendering-Citations.md -
Write Git Commit Messages with Your Favorite Editor
How to configure Git to use your preferred editor (like Neovim) for writing multi-line commit messages, plus tips for advanced commit workflows.
issue-resolution/Write git commit messages with your favorite editor..md -
YAML Consistency for Content Collections & Script Actions
Ensuring reliable YAML frontmatter for Astro content collections and script automation—approaches, pitfalls, and tooling support.
issue-resolution/YAML Consistency for Content Collections & Script Actions.md -
Suggest a Non-Destructive Refactor
Provide recommendations for improving code organization and structure while preserving functionality and maintaining existing patterns
prompts/code-style/Merge-Functionality-into-One-File.md -
Suggest a Non-Destructive Refactor
Provide recommendations for improving code organization and structure while preserving functionality and maintaining existing patterns
prompts/code-style/Suggest-a-Non-Destructive-Refactor.md -
Integrate new content thread by creating a template
Use Astro Collections, audit frontmatter, and create template that can be used in Scripts, Observers, and Watchers
prompts/data-integrity/Integrate-New-Content-Thread-by-Creating-Template.md -
Fixing 404 Errors in Dynamic Routes with Proper Slug Generation
Resolving path mismatches between URL construction and getStaticPaths in Astro dynamic routes
issue-resolution/Dynamic-Route-Slug-Generation-404-Fix.md -
Write a Comprehensive Git Squash-Merge
A step-by-step, human-readable workflow for safely squash-merging development into master in a multi-contributor project.
prompts/workflow/Write-a-Comprehensive-Squash-Merge.md -
Change Role and Implement Prompt
Seamlessly switch roles from product manager to developer and implement prompts with context awareness and precision.
reminders/Change-Role-to-Developer-and-Implement-Prompt.md -
Comprehensive Rules to tame Code Generator LLMs
Unlock the secrets to taming LLM code generators with a masterclass in rules, conventions, and practical strategies for bulletproof automation.
reminders/Comprehensive-Rules-for-Code-Generation.md -
Create a permanent memory for project YAML conventions
Eliminate frustration by observing guidelines, working within hard rules and constraints, and learning to detect YAML irregularties that could cause bugs and failures.
reminders/Create-Permanent-Project-Memory-for-YAML-Handling.md -
Extending Markdown with Obsidian FlavoredSyntax
Discover how to supercharge your Markdown with Obsidian's advanced syntax, templates, and automation tricks for next-level note-taking and productivity.
reminders/Extended-Obsidian-Extended-Markdown.md -
Maintain a word-for-word dialog of our session
Capture every word of your human-AI dialog for perfect transparency, reproducibility, and context-aware automation.
reminders/Maintain-a-Session-Log.md -
Maintain Consistent Reporting
Master the art of consistent, auditable reporting for every automation, script, and observer in your content pipeline.
reminders/Maintain-Consistent-Reporting.md -
Maintain Consistent Reporting Templates
Build trust and clarity with consistent, reusable reporting templates that make every audit, fix, and automation step transparent and repeatable.
reminders/Maintain-Consistent-Reporting-Templates.md -
Maintain Robust Commenting in our Flavor
Unlock the power of readable, maintainable code with our signature commenting style—section openers, function docs, and clarity-first annotation for every project.
reminders/Maintain-Robust-Commenting-in-our-Flavor.md -
Maintain a Scripting Pipeline
Design modular pipelines to detect, clean, and report on markdown files—ensuring every content workflow is robust, maintainable, and auditable.
reminders/Maintain-Scripting-Pipeline.md -
Map of Dependencies
Eliminate frustration by observing guidelines, working within hard rules and constraints, and learning to detect YAML irregularities that could cause bugs and failures.
reminders/Map-of-Dependencies.md -
Map of Relevant Paths
Review this file to ensure code generation is using the correct paths and directory structure in this complex monorepo.
reminders/Map-of-Relevant-Paths.md -
Meticulous Constraints for Every Prompt
Master prompt engineering with essential, actionable constraints—ensuring every code generation task is robust, DRY, and error-resilient.
reminders/Meticulous-Constraints-for-Every-Prompt.md -
Read the relevant documentation before guessing.
Illuminate your coding journey by diving into relevant documentation, and transform assumptions into accurate, well-informed decisions.
reminders/Read-Relevant-Documentation-before-major-edits.md -
Remind a model to read documentation sources of included libraries
Give your AI Code Assistant the Aha! moment it needs to get through your blockers by learning directly from documentation sources.
reminders/Remind-a-Model-to-Read-Documentation-Sources.md -
Respect the framework nuances, read the docs
Brief description of the reminder functionality and purpose
reminders/Astro-Specifc-Nuances.md -
Discuss Spec init starter before Developing Spec
Brief description of the reminder functionality and purpose
reminders/Discuss-Spec-Init-before-Developing-Spec.md -
Create a permanent memory for project YAML conventions
Eliminate frustration by observing guidelines, working within hard rules and constraints, and learning to detect YAML irregularties that could cause bugs and failures
prompts/workflow/Help-Write-a-YAML-property-for-a-Directory-of-Files.md -
Manageable User Options
Configure and manage user options for build scripts and content processing
prompts/code-style/Maintain-Manageable-User-Options.md -
Move styles from Tailwind to CSS using our styles
We use Tailwind for speed and compact readability, but as we move to Astro, we should use CSS and try to maintain our CSS architecture
prompts/code-style/Move-Styles-from-Tailwind-to-CSS-using-our-Styles.md -
Streamline Interaction Design in CSS States
Create consistent, maintainable, and extensible patterns for CSS animations and transitions across components
prompts/code-style/Streamline-Interaction-Design-in-CSS-states.md -
Citation Processing for FileSystem Observer
In the tangled web of academic references, a robust citation processing system transforms chaotic footnotes into a harmonized knowledge registry, ensuring every intellectual debt is properly acknowledged and seamlessly tracked.
prompts/data-integrity/Another-attempt-at-Citation-Processing.md -
Known YAML Errors and Fixes Registry
Automated detection and correction system for common YAML frontmatter errors in Markdown content
prompts/data-integrity/Get-Known-Errors-and-Fixes.md -
Pull YAML properties from a diverged content collection, and merge them.
When content libraries diverge, and both libraries have important data and content, write a script that merges the matching files based on most recent or robust frontmatter and content.
prompts/data-integrity/Merge-Matching-Files-to-Add-YAML.md -
Frontmatter consistency through filesystem observer
Leverage Node.js filesystem APIs to monitor content directories, automatically validate and update frontmatter based on templates
prompts/data-integrity/Use-Filesystem-Observer-to-Assert-Frontmatter-Updated.md -
Writing Correction Functions
Create functions to fix known YAML errors in content files
prompts/data-integrity/Writing-Correction-Functions.md -
Our Extended Markdown Requirements as a Micromark Extension
Implement our proprietary extended markdown flavor as a micromark extension—bypassing remark, rehype, and all unified abstractions.
prompts/render-logic/Our-Extended-Markdown-Requirements-as-a-Micromark-Extension.md -
Dynamic Information Page Rendering in Astro
Empower developers to focus on layout and let MDX do the content and interaction
prompts/render-logic/Support-Dynamic-Information-Pages.md -
Create a Dynamic Footer
Design and implement a modern, user-friendly dynamic footer interface that handles both code and content changes
prompts/user-interface/Create-a-Dynamic-Footer.md -
Use Magazine Style Layout for new Specs Collection
Use a magazine-style layout for the new Specs Collection, reusing as many components and render pipeline as possible.
prompts/user-interface/Use-Magazine-Style-Layout-for-new-Specs-Collection.md -
Create a Simple Message Grid
Build a maintainable component pipeline for rendering simple messages dynamically generated from JSON data.
prompts/user-interface/Create-a-Simple-Message-Grid.md -
Create a Simple Question Answers Section
Build a maintainable component pipeline for rendering simple questions and answers dynamically generated from JSON data.
prompts/user-interface/Create-a-Simple-Question-Answers-Section.md -
Report on YAML Idiosyncracies
Write or run a script that iterates through content libraries and reports on YAML idiosyncracies.
prompts/workflow/Report-on-YAML-Idiosyncracies.md -
Frontmatter Date Formatting Fix
Resolving timestamp and quoted date issues in frontmatter
issue-resolution/Frontmatter--Date-formatting-fix.md -
Comprehensive Rules to tame Code Generator LLMs
A comprehensive, click-worthy guide to every YAML property and value syntax nuance you need to master for robust automation and content integrity.
reminders/Exhuastive-List-of-YAML-Properties-and-Value-Syntax.md -
Full-Width Separator Issue Resolution
Solving the challenge of creating truly full-viewport-width separators in a constrained layout
issue-resolution/Full-Width-Separator-Issue-Resolution.md -
Configure Yamllint based on our patterns.
Use a smart library, Yamllint, to audit and fix our YAML frontmatter based on our specified patterns.
prompts/data-integrity/Configure-Yamllint-based-on-our-patterns.md -
Create a Content Registry Script
Build a registry system for tracking and managing Markdown files
prompts/data-integrity/Create-a-Content-Registry-Script.md -
Create or Update Open Graph Data
Build a script to fetch and update Open Graph metadata for content files using a simple build orchestrator
prompts/data-integrity/Create-or-Update-Open-Graph-Data.md -
Fix one YAML Issue at a Time
Create a focused script to identify and fix individual YAML issues in frontmatter without causing cascading problems
prompts/data-integrity/Fix-one-YAML-Issue-at-a-Time.md -
Fix one YAML Issue at a Time
Systematic approach to cleaning URL properties in YAML frontmatter
prompts/data-integrity/Fix-one-YAML-Issue-at-a-Time--alt.md -
Integrate OpenGraph fetch into filesystem observer
Leverage Node.js filesystem APIs to monitor content directories, automatically fetch OpenGraph metadata and update frontmatter
prompts/data-integrity/Integrate-OpenGraph-Fetch-into-Observer.md -
Return only files with valid Frontmatter
Filter and validate markdown files based on frontmatter content
prompts/data-integrity/Return-only-files-with-valid-Frontmatter..md -
Conditional Logic for Content
Implement conditional rendering based on content status and user roles
prompts/render-logic/Conditional-Logic-for-Content.md -
Integrate the Concepts series into the "more-about" routing
Enhance the "more-about" path with Concepts as well as Vocabulary
prompts/render-logic/Convert-Static-Routing-to-Dynamic-Routing-in-Tags.md -
Create a Variant of an Existing Component
The component we have is great, but we need a variant of it.
prompts/render-logic/Create-a-Variant-of-an-Existing-Component.md -
Create Fallbacks, Error, and Waiting Components
Ideal, immediate renders are not always possible. We need to create components that handle these situations gracefully. They should be clever and on-brand.
prompts/render-logic/Create-Fallbacks-Error-Waiting-Components.md -
Handle Citations in Markdown Content
Handle citations in markdown content by extracting them and rendering them in a structured format
prompts/render-logic/Handle-Citations-Logic-and-Render-Citations-Component.md -
Handle iFrames in Markdown Content
Handle iFrames in markdown content by pulling them out before other content processing, then adding them back to the AST before rendering.
prompts/render-logic/Handle-iFrames-with-our-AST-Rendering-Pipeline.md -
Integrate the Concepts series into the "more-about" routing
Enhance the "more-about" path with Concepts as well as Vocabulary
prompts/render-logic/Integrate-Concepts-into-More-About.md -
Rendering Callout Blocks with Classes
Several forms of extended markdown make heavy use of callout blocks, which can be rendered with combinations of Astro Components, Semantic HTML, and CSS classes
prompts/render-logic/Rendering-Callout-Blocks-with-Classes.md -
Rendering Extended Markdown like Astro-Big-Doc
A simplified approach to rendering callout blocks by following astro-big-doc pattern of component-based AST handling
prompts/render-logic/Rendering-Extended-Markdown-like-Astro-Big-Doc.md -
Add Sort by Functionality to Tag Column
Make the tag column more powerful by allowing different kinds of sort patterns
prompts/user-interface/Add-Sort-by-Functionality-to-Tag-Column.md -
Create a Hero Component
Design and implement a modern, user-friendly hero component with gradient effects, responsive design, customizable content, and smooth scroll-based animations.
prompts/user-interface/Create-a-Hero-Component.md -
Create a Price Card
Design and implement a responsive pricing card component with modern styling
prompts/user-interface/Create-a-Price-Card.md -
Create a Reusable Content Collections UI Structure
Build a maintainable component pipeline for rendering content collections with separated structure and presentation
prompts/user-interface/Create-a-Reusable-Content-Collections-UI-Structure.md -
Create a Vocabulary Collection render pipeline
Build a render pipeline for vocabulary using the component pipeline for rendering content collections with separated structure and presentation
prompts/user-interface/Create-a-Vocabulary-Collection-UI-using-Prior-Components.md -
Get UI Inspiration From URL
Analyze and extract design patterns and UI components from external websites for inspiration
prompts/user-interface/Get-UI-Inspiration-From-URL.md -
Render Site Flavored Markdown
Render site flavored Markdown in layers with Marked Extensions
prompts/user-interface/Render-Site-Flavoured-Markdown-in-Layers.md -
Repurpose a UI Template in our Codebase
Adapt and reuse existing UI components and templates for new features
prompts/user-interface/Repurpose-a-UI-Template-in-our-Codebase.md -
Cleaning Build Scripts
Improve build scripts by following strict naming conventions and error handling patterns
prompts/workflow/Build-Scripts-that-Clean-Data.md -
Create a Content Generation Engine
Build a RAG-based content generation system with multi-model API integration
prompts/workflow/Create-a-Content-Generation-Engine.md -
Ask the AI Code Assistant to Improve your Prompts
Takes one to know one. Ask the AI Code Assistant to improve your prompt before you ask it to execute it.
prompts/workflow/Improve-on-a-User-Prompt-through-Iteration.md -
Resolving Local SVG Image Rendering Issues in Astro
Troubleshooting and fixing SVG images not rendering from the public directory
prompts/workflow/SVG-Image-Rendering-Issue-Resolution.md -
Use an LLM Gateway to Augment Content
Create the content of a thousand content marketers with an LLM Gateway -- LiteLLM, Fabric, Ollama, MSTY
prompts/workflow/Use-LLM-Gateway-to-Augment-Content.md -
Write a Code Changelog Entry
Create structured and informative changelog entries for code changes
prompts/workflow/Write-a-Code-Changelog-Entry.md -
Write a Changelog Entry
Create structured and informative changelog entries for code changes
prompts/workflow/Write-a-Content-Changelog-Entry.md -
Write a Git Commit for one Directory
Create structured and informative git commit messages for code changes
prompts/workflow/Write-a-Git-Commit-for-one-Dir.md -
Write a meaningful but concise git commit.
Make Git and GitHub work better for your team by leveraging LLM Code Assistants.
prompts/workflow/Write-a-Raw-Text-Git-Commit.md -
Write a Technical Specification with a Standard but Evolving Style
Create comprehensive technical specifications for completed tasks and features
prompts/workflow/Write-a-Technical-Specification.md -
Write an note that leaves a breadcrumb for future Issue Resolution
Create comprehensive technical specifications for completed tasks and features
prompts/workflow/Write-an-Issue-Resolution-Breadcrumb.md -
Prompt Rendering Pipeline Issue Resolution
Fixing content rendering issues in the dynamic prompt pages
issue-resolution/Prompt-Rendering-Pipeline-Issue.md -
Create A Magazine Style Layout
Design a flexible, reusable magazine-style layout for displaying content threads (e.g., blog posts, articles) in Astro using modular components and a clear render pipeline.
prompts/user-interface/Create-a-Magazine-Style-Layout.md -
Citation Processing for FileSystem Observer
Enhance the filesystem observer to automatically format citations, convert to hex IDs, and maintain a citation registry
prompts/data-integrity/Refactored-Citations-Observer.md -
Keep a Changelog
Standardized approach to maintaining comprehensive changelogs for code and content changes
blueprints/Keep-a-Changelog.md -
AstroMarkdown Mermaid Rendering Issue Resolution
Breadcrumb documenting the resolution of Markdown/AST rendering issues for Mermaid diagrams and code blocks in AstroMarkdown.astro.
issue-resolution/Mermaid-Rendering-tangles-Rehype-Remark.md -
lost-in-public/refactors/ongoing-log-of-opportunities-to-refactor
refactors/Ongoing-Log-of-Opportunities-to-Refactor.md -
lost-in-public/reminders/specification-guidelines-template
reminders/Specification-Guidelines-Template.md
memopop-ai 21 docs
-
Streams and a Stream-Index for the Sources Curation UI — A Plan
A 'stream' is a URL that regularly publishes credible, relevant content — an insights/blog index, a newsroom, an RSS feed — as opposed to a one-off article. augment-it already named and modeled this exactly ('media_streams', the recurring publisher). This plan adopts that vocabulary and adds a stream-index.md registry plus light UI affordances to the existing curate_sources.py tool, so when the analyst finds a recurring publisher (e.g. rockhealthcapital.com/insights/) they can register it as a stream instead of mis-filing it as a citable source. Plan only; no polling/walking infrastructure here.
plans/Streams-and-a-Stream-Index-for-the-Curation-UI.md -
In-App Chat Surface for MemoPop Native — A Plan
Stand up a context-aware chat co-pilot inside the MemoPop Native Tauri app: a Svelte drawer that reads FlowState to anticipate the next verbs, a sidecar-side /chat/turn endpoint that assembles the four-slab prompt and routes a turn to answer / propose / invoke, and a capability layer that — at first — wraps the operations the app already has (memo runs, deal/firm creation, artifact open, roster crawl) before reaching for net-new source-curation verbs. Built on the existing two-method transport, the LLM-gateway invariant (sidecar holds the key), and the FlowState reactivity discipline — so chat is a new surface, not a new runtime. Plan only; no implementation here.
plans/In-App-Chat-Surface-for-Memopop-Native.md -
Sources Curation UI — A Local Tool for Converging a Sources.md
A small, disposable, single-file local web tool that binds a curation UI to one Sources-aggregated.md: page through each source, edit its metadata, delete/reorder, preview its content via Jina, type a new search term and fire SearXNG, and pull relevant results back into the list. Reuses the orchestrator's existing src/curation parsing + fetch; adds no dependencies. Saves a converged inputs/Sources.md (backed up, never clobbering the worksheet). Built for the immediate ImmuneCo curation, refactor-friendly later.
plans/Sources-Curation-UI-Tool.md -
Human-Curated Source Sets and Per-Firm RAG for Memo Narrative
What if 'fighting Perplexity' is the wrong frame — and the fix is to keep its one-shot take as commentary, route the real research through validated harvesters, then let the analyst rank and prune sources in a GUI before any prose gets written, with the firm's own PDFs and transcripts as a parallel standing corpus the writer can cite from? Here's the pipeline shape and the retrieval-provider option set that supports it.
explorations/Human-Curated-Source-Sets-and-Per-Firm-RAG-for-Memo-Narrative.md -
Curating Only Valid Sources Across Runs
The memo pipeline recycled the same sources as unique sources across sections, half of them dead pages returning HTTP 200. Downstream curation cannot fix what `citation_enrichment.py` invents upstream. Verdict: Perplexity completely hallucinates sources — cannot be trusted at all.*
explorations/Curating-only-valid-Sources-across-Runs.md -
Separating Retrieval from Generation in Agent Pipelines
When the same LLM agent both searches the web and writes the prose that cites those searches, it can't help fabricating URLs. This is not a bug — it's the predictable failure mode of asking one cognitive process to do two different jobs. Here's the agent topology that makes citation hallucination structurally impossible. *Updated 2026-06-08 with production evidence: Perplexity completely hallucinates sources — cannot be trusted at all. 65 fabricated `example.com` URLs in a single memo run.*
explorations/Separating-Retrieval-from-Generation-in-Agent-Pipelines.md -
Where Investor-Firm Rosters Live
When a deal artifact bundle includes the investor's team roster, where does that roster live? Inside the deal folder it duplicates on every co-investor; in a global firms index it loses deal context. Stub for a real exploration.
explorations/Where-Investor-Firm-Rosters-Live.md -
Add People Crawl Command to MemoPop Native
Wire the orchestrator's `extract_team_roster` command into the MemoPop Native UI as a per-investor button — and as a batch action that runs it 5–20 times per memo, once for each co-investor in the round.
plans/Add-People-Crawl-Command-to-Memopop-Native.md -
Crawl for Better Team Structured Output
Building a team slide takes analysts 1–2 hours of clicking. The orchestrator already writes prose about teams; what it doesn't do is hand back the structured roster — names, titles, durable photo URLs, professional socials — that the MemoPop app needs to render cards. Here's the option space for closing that gap.
explorations/Crawl-for-Better-Team-Structured-Output.md -
Team and People Metadata Ingestion
Six phases to take any company URL → structured TeamRoster JSON the MemoPop app can render as cards. Each phase ships independently and is verifiable on its own.
plans/Team-and-People-Metadata-Ingestion.md -
MemoPop AI — Ideogram OG Image Brief
Creative brief for generating OpenGraph and changelog hero images via Ideogram. A house-style prefix and suffix that any per-image scene description plugs into so the family stays coherent across the splash page, changelog entries, and context-v notes.
MemoPop-Creative-Brief.md -
Upgrade the MemoPop AI splash with three-mode theming, context-v rollup, peer-aware discovery, and Pagefind
The current memopop-site shipped fast but pre-dates the conventions astro-knots/splash settled into a few days later. This plan brings memopop-site up to that bar — three-mode toggle on a two-tier token system, a context-v archive alongside the existing changelog, peer-directory rollup that walks the monorepo (apps/* and packages/*) instead of children, and Pagefind across both archives — without touching the design language. Implementation is free to invent its own visual identity; this plan only locks down the mechanics.
plans/Upgrade-Memopop-Splash-with-Themes-Context-V-and-Pagefind.md -
Character Cast for Live Agent Indication
Personify the orchestrator's agents as a cast of named, faced characters. A row of portraits sits above the run panel; the ones currently doing work glow, with a live caption underneath describing what each is up to right now.
specs/Character-Cast-for-Live-Agent-Indication.md -
Moving an Agent Orchestrator to an API
The orchestrator is a Python CLI today. To plug it into memopop-native, we need an HTTP-shaped surface. Three options, ranked by effort and time-to-value.
explorations/Moving-an-Agent-Orchestrator-to-an-API.md -
An Onboarding User Journey for memopop-native
Experiences win on Onboarding. This spec outlines a user journey for onboarding users to memopop-native.
specs/An-Onboarding-User-Journey-for-Memopop-Native.md -
Grill Me: A Per-Section User-Input Moment in MemoPop Runs
A proposed pause-point in the orchestrator where, for any given section, MemoPop turns the question around and grills the user — surfacing what it found, what's ambiguous, and what choice the user (not the model) should make about the synthesized output. First user is the competitive section, where the gap between an exhaustive research file and a synthesized memo section is large enough that the model shouldn't pick the synthesis frame alone. Designed generic from day one so other sections can adopt it without re-architecting.
explorations/Grill-Me-Per-Section-User-Input-Moment.md -
memopop-ai/links-for-corpus
Links-for-Corpus.md -
memopop-ai/plans/generate-dd-questions--checklist
plans/Generate-DD-Questions-&-Checklist.md -
memopop-ai/plans/include-validation-analysis-as-action-items
plans/Include-Validation-Analysis-as-Action-Items.md -
memopop-ai/preferred-format-for-changelog
Preferred-Format-for-Changelog.md -
memopop-ai/tasks
Tasks.md
memopop-native 1 doc
memopop-orchestrator 33 docs
-
Research Agent Concatenates Multiple Sources Under One Citation ID — And No Validator Catches It
The downstream symptom (orphan `[^N]` markers in exported memos) is a citation-format failure at the very top of the pipeline: `research_enhanced.py` writes multiple sources onto a single line under the same `[^N]:` heading, with no newline separators and frequent ID reuse. Six of nine research files in the Panthalassa-Deck-Series-B v0.0.3 run carry these malformed lines (one section reuses `[^12]` six times). The downstream regex parsers only see the first source per ID and silently drop the rest. The `citation_validator` agent that exists checks claim accuracy, not bibliography format, so the malformation passes through unflagged. The architectural fix is the Source Harvester / Section Writer split documented in CLAUDE.md §'Architectural direction (2026-05)' but not yet built. Three smaller backstops can close the gap before that ships.
issue-resolution/Research-Agent-Concatenates-Multiple-Sources-Under-One-Citation-ID.md -
Section Citations Orphaned When Definitions Live in 1-research/
Writer agents emit `[^N]` references in `2-sections/NN-foo.md` but the actual citation *definitions* live in `1-research/NN-foo-research.md`. The downstream `cli/utils/consolidate_citations.py` only reads `### Citations` blocks inside section files, so every ref whose definition lives in the research file becomes an orphan in the exported memo. On the Panthalassa-Deck-Series-B v0.0.3 export, 17 distinct ref IDs in body but only 8 defs survived — most of the bibliography didn't render. A new `cli/utils/hydrate_section_citations.py` pulls missing defs from 1-research/ into each section file as a pre-step, wired into `recompile_memo.py` so it runs on every assembly.
issue-resolution/Section-Citations-Orphaned-When-Defs-Live-In-1-Research.md -
Per-Deal Focal Points
Analysts know things about a company that no automated pipeline will surface — the founder's prior wins, the partner thesis match, the IC concern to preempt, the angle that makes this deck worth the partnership's time. Per-deal focal points are the small, ordered list of human-supplied bullets that the writer agents must respect as load-bearing emphasis, not optional context.
specs/Per-Deal-Focal-Points.md -
Trustworthy Citations: Source Harvester Rollout
Where we are after the ChromaDB curation post-mortem, why the existing anti-hallucination work hasn't held, and the concrete six-phase plan to make fabricated URLs structurally impossible — starting with cheap fixes that block the bleeding and ending with a Source Harvester / Section Writer split.
plans/Trustworthy-Citations-Source-Harvester-Rollout.md -
Generic competitor analysis enhancement, post-hoc and re-runnable
Move competitor research/evaluation from a one-shot pipeline step into a re-runnable, configurable enhancement — driven by `.md` + frontmatter schemas, applicable to any version of any memo, surfaced in memopop-native.
plans/Generic-Competitor-Analysis-Enhancement.md -
Generic scorecard generation across firms and outlines
Refactor the scorecard agent + CLI from hardcoded Hypernova/fund-only to a generic renderer driven by `.md` + frontmatter scorecards, then surface it in memopop-native on the deal page.
plans/Generic-Scorecard-Generation.md -
Wire memopop-native to the FastAPI sidecar
End-to-end plan for closing the loop from Tauri click to live log stream — Rust dispatcher forwards JSON, browser EventSource handles SSE, sidecar spawns lazily.
plans/Wire-Memopop-Native-To-The-FastAPI-Sidecar.md -
Interactive Terminal Application — Easy Interface for Casual Users
A guided CLI application that walks users through memo generation, export, and iteration without requiring knowledge of individual commands, flags, or file paths.
specs/Interactive-Terminal-Application-Easy-Interface-for-Casual-Users.md -
Introducing Investigate Capital Syndicate with Detailed Artifacts
A research agent that investigates every investor, fund, family office, and financial institution on a company's cap table and in the current round — producing detailed profiles, pattern analysis, and signal extraction for investment decision-making.
specs/Introducing-Investigate-Capital-Syndicate-with-Detailed-Artifacts.md -
Introducing a One-Pager Cover Sheet and Export
A post-pipeline agent and CLI tool that distills the full investment memo into a single-page visual summary, usable as both a standalone deliverable and a cover sheet prepended to the full memo export.
specs/Introducing-a-One-Pager-Cover-Sheet-and-Export.md -
Introducing a Content Density Mode System
A system-level content mode toggle (redundant vs concise) that alters the behavior of the writer, table generator, and quality agents to match different firm preferences for information density and repetition.
Introducing-a-Content-Density-Mode-System.md -
Introducing a Legal Doc Comparator
An agent that compares deal-specific legal documents (SAFEs, convertible notes, term sheets, incorporation docs) against firm-maintained standard templates, surfacing deviations and flagging common legal risks using a shared reference document.
Introducing-a-Legal-Doc-Comparator.md -
Introducing an Augment Research Writer Agent
A two-phase post-hoc enrichment system that first enhances research files with authoritative third-party citations via Perplexity Sonar Pro, then runs an augmentation writer that weaves those new citations into existing section prose without rewriting content.
Introducing-an-Augment-Research-Writer-Agent.md -
Introducing an Enrich Visualizations Agent
An enrichment agent that discovers and embeds publicly accessible charts, graphs, diagrams, and infographics from web sources to visually reinforce key claims in investment memos — the automated equivalent of grabbing charts from Google Image search.
Introducing-an-Enrich-with-Visualizations-Search-Agent.md -
Introducing a Competitive Landscape Research and Evaluation System
Two coordinated agents—a Competitive Landscape Researcher and a Competitive Landscape Evaluator—that produce accurate, validated competitor analysis by combining multi-query web research with structured relevance screening.
specs/Introducing-a-Competitive-Landscape-Research-and-Evaluation-System.md -
Introducing a Table Generator Agent
A post-writer enrichment agent that identifies tabular data opportunities in memo sections and generates markdown tables with overflow anchor linking, configurable column schemas, and firm-specific customization.
specs/Introducing-a-Table-Generator-Agent.md -
Introducing a Diagram Generator Agent
Add a diagram_generator.py agent that identifies opportunities to create visual diagrams explaining complex business concepts, starting with TAM/SAM/SOM market sizing and expanding to common finance and consulting visuals.
specs/Introducing-a-Diagram-Generator-Agent.md -
PDF Parser Agent Specification
A small specification for an agent and script to parse PDFs and convert them to markdown with properly formatted citations.
specs/Introducing-a-PDF-Parser-Agent.md -
Deck Analyzer Agent
A specialized agent for extracting structured data and visual screenshots from pitch decks (PDF and PowerPoint) to bootstrap investment memo generation.
specs/Deck-Analyzer-Agent.md -
Git Submodules for Private Data and Exports
Configure git submodules to enable private GitHub repositories for sensitive company data inputs and branded memo exports, while keeping the main orchestrator repo public/shareable.
blueprints/Git-Submodules-for-Private-Data-and-Exports.md -
Model Scorecard Agent and Template System
Add proprietary investment scoring frameworks to memo generation, enabling VC firms to systematically evaluate and communicate their differentiated investment thesis.
blueprints/Model-Scorecard-Agent-and-Template-System.md -
Portfolio Listing Agent and Current Portfolio Section
Design notes for the portfolio_listing_agent that builds a Current Portfolio subsection and structured JSON for LP-commit emerging manager fund memos.
Portfolio-Listing-Agent-and-Current-Portfolio-Section.md -
Dataroom Analyzer Agent System Plan
A comprehensive plan for implementing a multi-agent dataroom analysis system that intelligently recognizes, categorizes, and extracts information from diverse document types in investment datarooms.
specs/Dataroom-Analyzer-Agent.md -
Format Memo According to Outline Input
Refactor the investment memo system to use YAML-based content outlines that agents can reference for structure, guiding questions, and vocabulary.
reminders/Format-Memo-According-to-Template-Input.md -
Improve Investment Memo Output
Improve the quality and depth of investment memos generated by the Investment Memo Orchestrator.
issue-resolution/Improving-Memo-Output.md -
Generate Investment Memo for Portfolio Company
Create investment opportunity briefs that match Hypernova's analytical voice, format, and depth using AI-assisted generation with structured inputs and validation.
reminders/Generate-Investment-Memo-for-Portfolio-Company.md -
memopop-orchestrator/agent-skills/setup-new-firm/skill
End-to-end procedure for onboarding a new VC firm into the memopop investment-memo orchestrator. Five phases — (1) brand acquisition via Firecrawl with analyst-override on the primary-color heuristic, (2) firm-directory scaffolding under io/<firm>/ with the canonical configs/templates/assets/deals layout and the strict brand-config YAML schema, (3) investment-framework outline selection (typically forking an existing outline like alpha-partners-7-Cs and customizing — section reordering, preambles, preferred-source swaps, stage-aware fallbacks), (4) first deal setup with deck-input handling (DocSend capture via cli/capture_docsend.py, ImageMagick screenshot stitching for NDA-gated decks, deal-config JSON, codified Sources.md), and (5) optional private-repo split via gh CLI with submodule re-add for confidential firm data. Use whenever the user says "I have a new client/firm/VC," "set up <firm name>," "add <firm> to memopop," "we need brand configs for <firm>," or pastes a VC firm's URL with implicit intent to generate memos for them. Encodes lessons from the alpha-jwc onboarding on 2026-06-07 — don't trust Firecrawl's primary-color field blindly, verify against the logo palette; the deck analyst will extract DocSend watermarks as the company name if you feed it watermarked screenshots; agents leak firm-geography context into company-analysis prose (Alpha JWC = Indonesia VC → Portland-OR company memo gained Indonesia/rupiah risks); citation-enrichment fabricates example.com URLs even in codified-source mode — codified Sources.md only constrains the upstream researcher, not the downstream enricher. Cross-references [[crawl-fetch-ingest]] for portfolio/team data, [[sources-md-curation]] for the Sources.md file mechanics, and the open issues in context-v/issue-resolution/ ([[Limiting-or-Omitting-Investor-Judgement]], [[Competitive-Research-Generated-But-Not-In-Prose]], [[Including-Comparable-Exits-Valuations-IPOs]]) for known failure modes the new firm's first run will hit.
agent-skills/setup-new-firm/SKILL.md -
memopop-orchestrator/blueprints/ideal-information-hierarchy-applied-to-markdown-headings
blueprints/Ideal-Information-Hierarchy-Applied-to-Markdown-Headings.md -
memopop-orchestrator/getting-started-with-tauri
Getting-Started-with-Tauri.md -
Migrate `studies/open-specs-and-standards/` into its own pseudo-monorepo
plans/Migrating-Study-to-its-own-Pseudomonrepo.md -
memopop-orchestrator/prompts/integrate-an-ai-provider
prompts/Integrate-an-AI-Provider.md -
memopop-orchestrator/prompts/reorder-and-edit-direct-outline
prompts/Reorder-and-Edit-Direct-Outline.md -
memopop-orchestrator/reminders/the-voice-and-purpose-of-changelogs
reminders/The-Voice-and-Purpose-of-Changelogs.md
memory-layers-for-agents 18 docs
-
paxm
profiles/Profile__Paxm.md -
understand-anything
profiles/Profile__Understand-Anything.md -
beads
profiles/Profile__Beads.md -
byterover
profiles/Profile__ByteRover.md -
hindsight
profiles/Profile__Hindsight.md -
honcho
profiles/Profile__Honcho.md -
openviking
profiles/Profile__OpenViking.md -
retaindb
profiles/Profile__RetainDB.md -
supermemory
profiles/Profile__Supermemory.md -
graphify
profiles/Profile__Graphify.md -
graphiti
profiles/Profile__Graphiti.md -
letta
profiles/Profile__Letta.md -
mem0
profiles/Profile__Mem0.md -
mempalace
profiles/Profile__MemPalace.md -
neo
profiles/Profile__Neo.md -
statebench
profiles/Profile__StateBench.md -
volt
profiles/Profile__Volt.md -
memory-layers-for-agents/profiles/profile__delta-mem
profiles/Profile__Delta-Mem.md
open-specs-and-standards 14 docs
-
superpowers
profiles/Profile__Superpowers.md -
openui
profiles/Profile__OpenUI.md -
12-factor-agents
profiles/Profile__12-Factor-Agents.md -
agent-2-agent
profiles/Profile__Agent-2-Agent.md -
agents-md
profiles/Profile__AGENTS-md.md -
get-shit-done
profiles/Profile__GSD.md -
llms-txt
profiles/Profile__llms-txt.md -
mcp-api
profiles/Profile__MCP-API.md -
modelcontextprotocol
profiles/Profile__Model-Context-Protocol.md -
symphony
profiles/Profile__Symphony.md -
frictionless-specs
profiles/Profile__Frictionless-Specs.md -
open-spec
profiles/Profile__OpenSpec.md -
spec-kit
profiles/Profile__Spec-Kit.md -
Filesystem Naming Conventions
inquiry/Filesystem-Naming-Conventions.md
perplexed 10 docs
-
Multi-Stage Cooperative Claude + Perplexity with RAG
What if a market-map draft were the output of three agents — a RAG pre-flight that names what to include, a Perplexity research run that finds the rest, and a Claude editorial pass that never steps on either — instead of one single-shot prompt?
explorations/Multi-Stage-Cooperative-Claude-and-Perplexity-with-RAG.md -
Wall-clock timeout cuts off long deep-research streams
The directory-template runtime caps every stream by total wall-clock duration, but the legacy modal flow already moved to per-chunk idle-timeout discipline two iterations ago — and the discrepancy is now actively truncating analyst-grade market-map drafts mid-sentence.
issues/Wall-Clock-Timeout-Cuts-Off-Long-Deep-Research-Streams.md -
Partials and preambles for perplexed templates
issues/Partials-And-Preambles-For-Perplexed-Templates.md -
perplexed/issues/getting-claude-to-respond-with-research
issues/Getting-Claude-to-Respond-With-Research.md -
perplexed/issues/updating-naming-to-reflect-provider-rebrand
issues/Updating-Naming-to-Reflect-Provider-Rebrand.md -
Plan — Bring Perplexed up to Obsidian Community-Plugin Publishing Standards
plans/20206-05-02_Assuring-Obsidian-Community-Plugin-Requirements.md -
Plan — Submission Blockers Punch List (from docs.obsidian.md re-read)
plans/2026-05-02_Submission-Blockers-Punch-List.md -
perplexed/reminders/ideal-and-overkill-schema-for-max-flexibility
reminders/Ideal-and-Overkill-Schema-for-Max-Flexibility.md -
This Is an Obsidian Plugin — Read the Obsidian API Docs
reminders/This-is-an-Obsidian-plugin-Read-Obsidian-API-Docs.md -
perplexed/specs/using-files-as-prompt-outlines
specs/Using-Files-as-Prompt-Outlines.md
plunk-it 1 doc
reach-edu-hub 20 docs
-
Workforce Development: The System Is Broken. The Model Is Here.
The U.S. workforce development system was built around employer demand, not worker mobility — producing credentials without career ladders, training without guaranteed outcomes, and a 'train and pray' model that leaves millions sidelined. The evidence is now clear on what actually works: work-based learning with adult relationships produces job quality gains that persist a decade. The Apprenticeship Degree is the only model that stacks all the evidence-based design features at once — earn-while-learn, employer co-design, post-secondary credential, and measured outcomes — at the exact moment federal policy aligned behind scaling it.
narratives/strategies/workforce-development/README.md -
Agent Workflow Maxxing
A small team has the surface area of a big one — sales conversations, travel, conferences, grant pipelines, stakeholder relationships — and historically had to triage most of it away. Dedicated agents and agent workflows change the math twice over: they reduce overwhelm on the work you already do, and they make possible work that simply wasn't (outreach nine months ahead, ten sales conversations at once, a grant corpus that drafts itself). This is the operating strategy — where to point agents first across travel, events, grants, ABM, and social — with examples, tools (paid + open source), and the human-in-the-loop guardrails that keep it from backfiring.
narratives/strategies/agent-workflow-maxxing/README.md -
NCAD Agentic Product Development Lab
Apprenticeship Degrees need a different technology stack than traditional or even online universities — one that integrates work and learning, gives employers visibility, and delivers chunked, assessable learning to busy working adults while still meeting credit-bearing accreditation. Historically that stack could only be built by expensive software-engineering teams. As of 2026, agentic 'vibe coding' tools let designers and domain experts prototype working software themselves. So the people closest to the problem — apprenticeship, industry-skills, and adult-education experts across NCAD's member network — can now prototype and build momentum on new pieces of that stack. This is the proposal to stand up that capability as a shared lab.
narratives/strategies/agentic-product-lab/README.md -
Opinionated Program Design: Frontier Job Demand
Don't build apprenticeship-degree programs from a generic course catalog — design them opinionatedly toward where job demand is actually going. Three frontier fields have the rare combination of huge unmet demand, strong employer pull, and work that's perfect for a work-embedded degree: Advanced Manufacturing Operations, Drone Sciences, and AI Technology in Business Operations. The Apprenticeship Degree is uniquely suited to fast-moving fields where the job itself is the curriculum — and the outcomes (employment, wages) are already proven.
narratives/strategies/frontier-job-demand/README.md -
Improving Literacy & Numeracy in Working Adults
Literacy and numeracy independently predict wages and promotions — even controlling for degrees, experience, and demographics. Yet most working adults sit below proficiency, and a credential can be earned without the underlying basics improving. This strategy folds validated foundational-skills pedagogy (the science of reading, now reaching adult education, plus contextualized/embedded numeracy) into the Apprenticeship Degree, and *measures* the gain — so the degree doesn't just certify, it durably lifts the capability that the labor market actually pays for.
narratives/strategies/literacy-numeracy/README.md -
Reverse Engineer Available Funding
Grant funding follows a power law: a small number of mega-foundations move most of the dollars, and a fast-growing population of ultra-wealthy individuals — especially 'new money' — hold enormous discretionary giving capacity. So don't spray small applications across a long tail. Concentrate where the money is: study the biggest, most-aligned funders' public footprint, get an intro call to learn their actual strategy, pattern-match across their giving, and design the ask to hit the sweet spot for the largest plausible amount.
narratives/strategies/reverse-engineer-funding/README.md -
Rural Income Boosts through Apprenticeship Degrees
A strategic narrative: the Apprenticeship Degree is not only a teacher-pipeline fix — it is a rural economic-development engine. Because it starts with a paid job and ends with a better one, debt-free and work-embedded, it raises individual incomes in place, keeps talent (and its wages) local instead of exporting it, and compounds into a local-economy multiplier — exactly what rural communities facing workforce shortages and out-migration need.
narratives/strategies/rural-income/README.md -
Fundraising Story 01 — The Apprenticeship Degree Is a New Category
Reach didn't build a better program; it built a new category of higher education — the work-embedded, debt-free, employer-paid degree — and the field's biggest funders are converging on the idea right as Reach has the only proven national instance of it. Fund the category-definer.
narratives/pre-rag-synthesis/01-the-apprenticeship-degree-is-a-new-category.md -
Fundraising Story 02 — Teaching Already Proved It
Reach's apprenticeship degree isn't a pilot hoping to work; it already solved the teacher-shortage problem at scale — 420+ K-12 systems across 8+ states, debt-free, paid-while-you-learn. For education funders this is the rare 'fund the proven thing's next chapter' story.
narratives/pre-rag-synthesis/02-teaching-already-proved-it.md -
Fundraising Story 03 — The Care-Economy Workforce Emergency
Behavioral health and healthcare have an acute, quantified workforce shortage and a talent pool 'hidden in plain sight' — incumbent care workers who can't reach licensure. Reach's Apprenticeship College of Health turns those jobs into degrees. This is the corpus's hottest, best-funded, most urgent story.
narratives/pre-rag-synthesis/03-the-care-economy-workforce-emergency.md -
Fundraising Story 04 — Economic Mobility Without the Debt
Nearly every funder in the corpus shares one north star: economic mobility. Reach's distinct claim is that it delivers measurable earnings gains in the learner's own community with zero debt — arguably the highest-ROI mobility intervention a funder can buy. This is the macro story that unifies the portfolio.
narratives/pre-rag-synthesis/04-economic-mobility-without-the-debt.md -
Fundraising Story 05 — Workers, Not Employers: Fixing the Broken Talent Marketplace
The talent marketplace is broken — millions of open jobs, millions of underemployed degree-holders, and employers who can't retain. Reach flips the model: it credentials the workers an employer already has, so talent development becomes retention. This story speaks to the workforce-development and skills-based-hiring funders.
narratives/pre-rag-synthesis/05-workers-not-employers.md -
Fundraising Story 06 — Talent Hidden in Plain Sight: Place-Based & Rural Pipelines
Reach's degrees don't require leaving town — learners earn them in their home communities, in the jobs they already hold. That makes Reach the natural vehicle for place-based and rural funders who want talent to stay and strengthen the local economy. This is the geographic cut across the portfolio.
narratives/pre-rag-synthesis/06-place-based-and-rural-pipelines.md -
Fundraising Story 07 — The AI-Era Learning Institution
AI is reshaping the job pyramid into a diamond — hollowing out entry rungs and raising the bar for the rest. The durable answer isn't more front-loaded college; it's continuous, work-embedded learning. Reach is structurally the institution built for that world. This is the leading-edge, forward-looking story — and the one that ties Reach to Lossless's own AI work.
narratives/pre-rag-synthesis/07-the-ai-era-learning-institution.md -
Pre-RAG Fundraising-Story Synthesis for Reach University — index, method, and how this changes once RAG/KAG lands
Seven recurrent themes pulled by hand from the reach-edu funder corpus (539 files across 57 funders), each framed as a fundraising story with its aligned funder cluster and cited proof points. This is the starter the operator asked for while proper retrieval (remote filesystem + SurrealDB vector/graph) is still a few days out — and an honest note on what synthesis looks like now vs. once RAG/KAG is real.
narratives/pre-rag-synthesis/README.md -
Pipeline Building & Automation — Scroll-Deck Outline
What Lossless will boot up for Reach next. Boost-and-relief for the current fundraise team, then widening the aperture to new donors, new grants, and a map of the philanthropic landscape.
narratives/pipeline-building-automation.md -
Reach Education Hub — `/` Index Page Brainstorm
Working doc on what the hub homepage communicates, who it serves, and the order of the scroll. Brainstorm, not a spec.
sitemap/Page__Index.md -
Deck Collections — a menu/aggregation layer above single-deck convergence
Everything dididecks has built so far (calmstorm, chroma) operates inside ONE deck: converging on a single narrative through variants and versions. reach-edu-hub needs the layer above that — a curated menu of several DISTINCT decks, each its own narrative (a 'strategy'). This doc names that layer 'deck collections', fixes the conceptual model (a collection groups peer decks; a variant is an alternate design of the same deck — different axis entirely), specifies the near-term reach instantiation (a Strategies collection of ~5, possibly more, decks), codifies the per-deck authoring loop (LLM-authored narrative markdown → Claude designs the deck Scroll-UI-first → register → drop into the existing dididecks variant/version workflow only if needed), and proposes how the concept graduates into the shared @dididecks/shell so it's reusable across client-sites.
explorations/Deck-Collections-A-Menu-Layer-Above-Single-Deck-Convergence.md -
Exporting the Strategy Decks to Google Slides
The seven strategy decks live as code — Astro Scroll-UI sections, not slides in any format Google Slides understands. Getting them into Slides for a stakeholder who wants to open, present, or lightly edit them in the tool she already knows is a real pipeline question, not a five-minute export. This names the actual path: what format has to exist first, what's proven prior art from calmstorm-decks, and what reach-edu-hub is missing today to make it clean.
explorations/Exporting-Strategy-Decks-to-Google-Slides.md -
Codify the deck design system & component library — author DESIGN.md, showcase it on /design-system, and refactor every kept element onto theme/mode tokens
Building six strategy decks produced a real, reusable design system — deck-primitives.css (a 15-class component vocabulary) plus a set of recurring section compositions (cover, stat slide, field template, two-column contrast, numbered flow, accent callout, tier cards, ask/close). None of it is documented or shown on /design-system, and there is no DESIGN.md. This plan codifies the system: author a DESIGN.md per the maintain-design-md (Google Stitch) spec, add the deck primitives + patterns to the /design-system page, and — the gating discipline — promote an element into the documented system ONLY once it reads the Tier-2 semantic + --fx-* tokens and works in light/dark/vibrant with no hardcoded colors. That last bar is what 'requires refactoring': the strategy decks are already token-driven, but the older story/automation/homepage sections hardcode dark:/vibrant: triples and must be reconciled (or explicitly excluded) for one coherent system.
plans/Codify-Deck-Design-System-and-Component-Library.md
self-host-stack 4 docs
-
Watchlist — Interesting Tools Not Yet Sorted
A running catch-all for tools worth a second look, before we know whether they map to a self-host-stack category, a personal-workstation list, or nothing at all.
explorations/Watchlist-Interesting-Tools.md -
Should Hermes Agent Co-Locate on the Same Host as TwentyCRM?
Colocation feels like it should mean 'automatic access' — the evidence says it doesn't, and the real value is elsewhere.
explorations/Hermes-Agent-Colocation-and-Hackability.md -
Sharing One Hermes Agent Instance Across a 3-Person Client Team
Hermes Agent has no shipped multi-user mode — the gap is real, catalogued, and still open upstream.
explorations/Hermes-Agent-Multi-User-Team-Access.md -
An Instantly-Synced Shared Folder for a 3-Person Team
Nextcloud was the first name that came to mind — but the actual ask is pure instant file sync, and that's a different tool's specialty.
explorations/Instantly-Synced-Team-Folder-Nextcloud-vs-Alternatives.md
site 1 doc
specs 17 docs
-
Churn: An AI content editor for the Internet has been missing.
Content Management Systems are an old paradigm, they are clunky, they are rarely where creatives develop content. HTML and CSS need to marry Content Editors
Churn-Content-Editor-for-the-Web.md -
Markdown-Serve: `md-serve` - a simple server and API for Markdown content rendering on the web
Markdown files have been the lingua franca of web content, on the rise since JAM Stack adoption. Yet, the development experience requires long builds, complex setups, massive content filling developer projects. Why not improve developer experience while making it easier to serve and render them?
Markdown-Serve-an-API-for-Markdown-Content.md -
AI-Powered Link Aggregator for Product Digital Footprint Discovery
Automatically discover and catalog social media profiles, code repositories, blog feeds, and other digital presence links for 1,400+ products in our tooling directory.
AI-Powered-Link-Aggregator-for-Product-Digital-Footprint.md -
An Obsidian Plugin that uses AI to Browserless Search, Perplexity API, follows outline
Extend Perplexed to summarize products
Search-and-Summarize-Obsidian-App.md -
YAML Frontmatter Error Detection and Correction System
Let content teams develop content. Handle frontmatter inconsistencies gracefully for a seamless user experience.
Cases-and-Corrections-for-YAML-Content-Wide.md -
Project Routing Collision Fix
Cleaned route collisions between Client Projects and canonical Projects, yet now need to figure out Client Projects again.
Project-Routing-Fix-Complete-Implementation.md -
AI-Powered Link Aggregator for Product Digital Footprint Discovery
Automatically discover and catalog social media profiles, code repositories, blog feeds, and other digital presence links for 1,400+ products in our tooling directory.
AI-Powered-Link-Aggregator-for-Product-Digital-Footprint 1.md -
A Collaborative Markdown-based Desktop Publisher
Technical specification document outlining implementation details
Create-a-Collaborative-Markdown-based-Desktop-Publisher.md -
Dynamic Webpage to Display Portfolio w Authentication
Dynamically display portfolio information on a branded webpage, with certain types of information only displayed for certain privileges connected to authentication.
Dynamic-Webpage-to-Display-Portfolio-w-Authentication.md -
Self-Updating Product Announcement Watcher
Automatically monitor, collect, and catalog product releases and announcements for 1,400+ tools in our content library without manual intervention.
Self-Updating-Product-Announcement-Watcher.md -
Complete Me: A context-aware, blazing fast markup editor.
Streamlines data entry and development workflows through rigorous, context-aware autocomplete in markup and json.
JSON-Editor-like-Obsidian.md -
Build-Out-WhatsApp-Plugins-Ecosystem-for-Overwhelmed-Professionals
WhatsApp and other messaging apps have become the defacto place where business is done. Why not make it work?
Build-Out-WhatsApp-Plugins-Ecosystem.md -
Salute: An AI design system generator that generates as you code.
The Design System to Engineering Handoff is clunky for most situations. Instead, designers vibe create design systems, and engineers vibe contribute. Managed through MCP
Salute-Design-System-Generator.md -
Maintain a Dynamic Project Viewer
A dynamic project viewer can handle multiple artifacts, file formats, and make it easier for clients to navigate projects.
Maintain-a-Dynamic-Project-Viewer.md -
Churn: An AI content editor for the Internet has been missing.
Content Management Systems are an old paradigm, they are clunky, they are rarely where creatives develop content. HTML and CSS need to marry Content Editors
Was-There-a-Substack-for-Event-Attendees.md -
Clean Specific Issues in YAML One at a Time
Targeted scripts to address specific YAML frontmatter issues for improved content management
Clean-Specific-Issues-in-YAML-One-at-a-Time.md -
Filesystem Observer for Consistent Metadata in Markdown Files
Let content teams develop content. Handle frontmatter inconsistencies gracefully for a seamless user experience.
Filesystem-Observer-for-Consistent-Metadata-in-Markdown-files.md