Maintain DomoDomo private local AI features, Ollama connections, browser inference, streaming UX, embeddings, RAG, memory, and agent interfaces. Use when changing src/tools/ai, AI services, workers, local model behavior, or AI-related backend routes.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Maintain DomoDomo private local AI features, Ollama connections, browser inference, streaming UX, embeddings, RAG, memory, and agent interfaces. Use when changing src/tools/ai, AI services, workers, local model behavior, or AI-related backend routes.
DomoDomo Local AI Maintenance
Maintain Local Ollama and browser inference features that must keep prompts, files, memory, and model execution on the user device.
Operating contract
Scope: Local Ollama and browser inference features that must keep prompts, files, memory, and model execution on the user device.
Primary files: src/tools/ai/, src/utils/aiService.ts, src/utils/mcpClient.ts, src/utils/transformers.worker.ts, src/utils/localMemory.ts, backend/routers/chat.py, and backend/utils/rag.py.
Before changing code: Read the UI request path, service boundary, streaming parser, local fallback path, and model-unavailable behavior before changing prompts or transport.
01. local AI feature intent
For local AI feature intent, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For local AI feature intent, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For local AI feature intent, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For local AI feature intent, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For local AI feature intent, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For local AI feature intent, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For local AI feature intent, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For local AI feature intent, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For local AI feature intent, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For local AI feature intent, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For local AI feature intent, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For local AI feature intent, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For local AI feature intent, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For local AI feature intent, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For local AI feature intent, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For local AI feature intent, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
For local AI feature intent, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For local AI feature intent, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For local AI feature intent, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For local AI feature intent, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For local AI feature intent, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
02. Ollama connection discovery
For Ollama connection discovery, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For Ollama connection discovery, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For Ollama connection discovery, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For Ollama connection discovery, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For Ollama connection discovery, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For Ollama connection discovery, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For Ollama connection discovery, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For Ollama connection discovery, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For Ollama connection discovery, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For Ollama connection discovery, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For Ollama connection discovery, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For Ollama connection discovery, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For Ollama connection discovery, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For Ollama connection discovery, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For Ollama connection discovery, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For Ollama connection discovery, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
03. model availability states
For model availability states, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For model availability states, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For model availability states, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For model availability states, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For model availability states, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For model availability states, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For model availability states, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For model availability states, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For model availability states, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For model availability states, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For model availability states, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For model availability states, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For model availability states, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For model availability states, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For model availability states, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For model availability states, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
04. streaming response parsing
For streaming response parsing, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For streaming response parsing, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For streaming response parsing, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For streaming response parsing, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For streaming response parsing, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For streaming response parsing, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For streaming response parsing, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For streaming response parsing, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For streaming response parsing, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For streaming response parsing, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For streaming response parsing, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For streaming response parsing, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For streaming response parsing, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For streaming response parsing, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For streaming response parsing, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For streaming response parsing, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
05. request cancellation
For request cancellation, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For request cancellation, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For request cancellation, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For request cancellation, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For request cancellation, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For request cancellation, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For request cancellation, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For request cancellation, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For request cancellation, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For request cancellation, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For request cancellation, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For request cancellation, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For request cancellation, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For request cancellation, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For request cancellation, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For request cancellation, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
06. prompt construction
For prompt construction, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For prompt construction, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For prompt construction, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For prompt construction, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For prompt construction, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For prompt construction, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For prompt construction, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For prompt construction, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For prompt construction, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For prompt construction, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For prompt construction, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For prompt construction, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For prompt construction, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For prompt construction, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For prompt construction, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For prompt construction, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
07. sensitive input handling
For sensitive input handling, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For sensitive input handling, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For sensitive input handling, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For sensitive input handling, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For sensitive input handling, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For sensitive input handling, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For sensitive input handling, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For sensitive input handling, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For sensitive input handling, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For sensitive input handling, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For sensitive input handling, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For sensitive input handling, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For sensitive input handling, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For sensitive input handling, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For sensitive input handling, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For sensitive input handling, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
08. local model selection
For local model selection, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For local model selection, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For local model selection, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For local model selection, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For local model selection, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For local model selection, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For local model selection, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For local model selection, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For local model selection, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For local model selection, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For local model selection, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For local model selection, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For local model selection, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For local model selection, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For local model selection, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For local model selection, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
09. browser inference workers
For browser inference workers, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For browser inference workers, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For browser inference workers, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For browser inference workers, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For browser inference workers, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For browser inference workers, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For browser inference workers, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For browser inference workers, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For browser inference workers, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For browser inference workers, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For browser inference workers, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For browser inference workers, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For browser inference workers, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For browser inference workers, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For browser inference workers, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For browser inference workers, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
10. embedding generation
For embedding generation, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For embedding generation, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For embedding generation, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For embedding generation, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For embedding generation, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For embedding generation, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For embedding generation, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For embedding generation, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For embedding generation, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For embedding generation, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For embedding generation, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For embedding generation, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For embedding generation, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For embedding generation, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For embedding generation, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For embedding generation, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
11. RAG retrieval context
For RAG retrieval context, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For RAG retrieval context, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For RAG retrieval context, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For RAG retrieval context, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For RAG retrieval context, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For RAG retrieval context, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For RAG retrieval context, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For RAG retrieval context, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For RAG retrieval context, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For RAG retrieval context, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For RAG retrieval context, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For RAG retrieval context, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For RAG retrieval context, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For RAG retrieval context, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For RAG retrieval context, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For RAG retrieval context, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
12. memory persistence
For memory persistence, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For memory persistence, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For memory persistence, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For memory persistence, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For memory persistence, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For memory persistence, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For memory persistence, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For memory persistence, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For memory persistence, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For memory persistence, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For memory persistence, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For memory persistence, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For memory persistence, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For memory persistence, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For memory persistence, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For memory persistence, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
For , inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
13. journal privacy boundaries
For journal privacy boundaries, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For journal privacy boundaries, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For journal privacy boundaries, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For journal privacy boundaries, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For journal privacy boundaries, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For journal privacy boundaries, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For journal privacy boundaries, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For journal privacy boundaries, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For journal privacy boundaries, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For journal privacy boundaries, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For journal privacy boundaries, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For journal privacy boundaries, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For journal privacy boundaries, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For journal privacy boundaries, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For journal privacy boundaries, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For journal privacy boundaries, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
14. token-by-token rendering
For token-by-token rendering, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For token-by-token rendering, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For token-by-token rendering, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For token-by-token rendering, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For token-by-token rendering, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For token-by-token rendering, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For token-by-token rendering, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For token-by-token rendering, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For token-by-token rendering, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For token-by-token rendering, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For token-by-token rendering, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For token-by-token rendering, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For token-by-token rendering, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For token-by-token rendering, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For token-by-token rendering, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For token-by-token rendering, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
15. error recovery states
For error recovery states, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For error recovery states, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For error recovery states, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For error recovery states, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For error recovery states, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For error recovery states, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For error recovery states, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For error recovery states, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For error recovery states, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For error recovery states, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For error recovery states, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For error recovery states, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For error recovery states, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For error recovery states, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For error recovery states, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For error recovery states, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
16. offline fallback behavior
For offline fallback behavior, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For offline fallback behavior, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For offline fallback behavior, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For offline fallback behavior, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For offline fallback behavior, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For offline fallback behavior, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For offline fallback behavior, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For offline fallback behavior, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For offline fallback behavior, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For offline fallback behavior, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For offline fallback behavior, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For offline fallback behavior, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For offline fallback behavior, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For offline fallback behavior, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For offline fallback behavior, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For offline fallback behavior, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
17. hardware capability messaging
For hardware capability messaging, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For hardware capability messaging, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For hardware capability messaging, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For hardware capability messaging, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For hardware capability messaging, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For hardware capability messaging, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For hardware capability messaging, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For hardware capability messaging, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For hardware capability messaging, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For hardware capability messaging, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For hardware capability messaging, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For hardware capability messaging, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For hardware capability messaging, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For hardware capability messaging, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For hardware capability messaging, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For hardware capability messaging, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
18. AI tool documentation
For AI tool documentation, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For AI tool documentation, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For AI tool documentation, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For AI tool documentation, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For AI tool documentation, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For AI tool documentation, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For AI tool documentation, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For AI tool documentation, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For AI tool documentation, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For AI tool documentation, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For AI tool documentation, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For AI tool documentation, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For AI tool documentation, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For AI tool documentation, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For AI tool documentation, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For AI tool documentation, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
19. local AI testing scenarios
For local AI testing scenarios, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For local AI testing scenarios, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For local AI testing scenarios, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For local AI testing scenarios, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For local AI testing scenarios, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For local AI testing scenarios, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For local AI testing scenarios, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For local AI testing scenarios, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For local AI testing scenarios, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For local AI testing scenarios, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For local AI testing scenarios, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For local AI testing scenarios, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For local AI testing scenarios, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For local AI testing scenarios, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For local AI testing scenarios, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For local AI testing scenarios, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
20. AI feature completion criteria
For AI feature completion criteria, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For AI feature completion criteria, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For AI feature completion criteria, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For AI feature completion criteria, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For AI feature completion criteria, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For AI feature completion criteria, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For AI feature completion criteria, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For AI feature completion criteria, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For AI feature completion criteria, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For AI feature completion criteria, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For AI feature completion criteria, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For AI feature completion criteria, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For AI feature completion criteria, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For AI feature completion criteria, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For AI feature completion criteria, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For AI feature completion criteria, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
Completion standard
Confirm every changed surface follows this playbook and its local-first constraints.
Confirm applicable documentation, About metrics, technical records, and blog content accurately describe the final behavior.
Confirm the handoff records the commands run, validation outcome, known limits, and intentionally deferred work.
For Ollama connection discovery, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For Ollama connection discovery, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For Ollama connection discovery, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For Ollama connection discovery, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For Ollama connection discovery, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For model availability states, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For model availability states, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For model availability states, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For model availability states, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For model availability states, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For streaming response parsing, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For streaming response parsing, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For streaming response parsing, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For streaming response parsing, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For streaming response parsing, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For request cancellation, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For request cancellation, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For request cancellation, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For request cancellation, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For request cancellation, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For prompt construction, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For prompt construction, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For prompt construction, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For prompt construction, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For prompt construction, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For sensitive input handling, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For sensitive input handling, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For sensitive input handling, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For sensitive input handling, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For sensitive input handling, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For local model selection, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For local model selection, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For local model selection, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For local model selection, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For local model selection, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For browser inference workers, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For browser inference workers, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For browser inference workers, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For browser inference workers, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For browser inference workers, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For embedding generation, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For embedding generation, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For embedding generation, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For embedding generation, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For embedding generation, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For RAG retrieval context, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For RAG retrieval context, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For RAG retrieval context, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For RAG retrieval context, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For RAG retrieval context, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
memory persistence
For memory persistence, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For memory persistence, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For memory persistence, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For memory persistence, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For journal privacy boundaries, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For journal privacy boundaries, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For journal privacy boundaries, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For journal privacy boundaries, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For journal privacy boundaries, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For token-by-token rendering, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For token-by-token rendering, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For token-by-token rendering, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For token-by-token rendering, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For token-by-token rendering, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For error recovery states, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For error recovery states, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For error recovery states, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For error recovery states, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For error recovery states, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For offline fallback behavior, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For offline fallback behavior, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For offline fallback behavior, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For offline fallback behavior, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For offline fallback behavior, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For hardware capability messaging, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For hardware capability messaging, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For hardware capability messaging, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For hardware capability messaging, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For hardware capability messaging, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For AI tool documentation, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For AI tool documentation, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For AI tool documentation, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For AI tool documentation, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For AI tool documentation, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For local AI testing scenarios, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For local AI testing scenarios, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For local AI testing scenarios, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For local AI testing scenarios, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For local AI testing scenarios, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For AI feature completion criteria, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For AI feature completion criteria, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For AI feature completion criteria, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For AI feature completion criteria, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For AI feature completion criteria, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.