算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
ai-chat【设计与创意】AI chat interface patterns for Angular 21.x and Flutter 3.41.x. Use when building streaming chat UI, conversational AI assistants, copilots, token context indicators, feedback loops, multi-modal inputs, tool visualization, or AI-specific error handling. Covers streaming markdown, auto-scroll heuristics, memoized rendering, token limit UI, regeneratio…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Iron Law: Load this skill before building any chat interface; never hardcode streaming or message formats without verifying against the skill's patterns.
Tech Stack: Angular 21.x (signals, daisyUI, TailwindCSS) | Flutter 3.41.x (Riverpod, Dart 3.10.9)
Load this skill when the task involves any of:
Before writing any component:
angular-spa skill — verify signal/OnPush/daisyUI baselineflutter-mobile skill — verify Riverpod/AppSpacing/colorScheme baselineContext7 MCP for any library not confirmed in this session (e.g., marked, flutter_markdown)| Component | Angular | Flutter |
|---|---|---|
| Message bubble list | ChatMessageListComponent | ChatMessageList widget |
| Streaming message display | StreamingMessageComponent | StreamedMessageWidget |
| Token context indicator | TokenIndicatorComponent | TokenIndicatorWidget |
| Chat input (multi-modal) | ChatInputComponent | ChatInputWidget |
| Feedback bar | FeedbackComponent | FeedbackBar widget |
| AI error display | AiErrorComponent | AiErrorWidget |
| Tool call visualization | ToolCallCardComponent | ToolCallCard widget |
See reference/quick-start.md for entry-point wiring (Angular ChatComponent + Flutter ChatScreen).
AbortController to cancel in-flight SSE streamscomputed() signal to derive rendered markdown — prevents re-parsing on every chunkaria-live="polite" wraps the message listAsyncNotifier with Stream.listen updates state incrementallyScrollController + addPostFrameCallback for auto-scroll after frameMediaQuery.of(context).disableAnimations before scroll animationsTokenIndicatorComponent uses daisyUI progress + text-warning/text-error classes at 80%/100% thresholdsLinearProgressIndicator with colorScheme.error / colorScheme.tertiaryreference/ai-error-handling.mdsignal<'up'|'down'|null> tracks selected thumb; regenerate re-emits promptHapticFeedback.lightImpact() on thumb press; colorScheme.primary for active stateEnter sends, Shift+Enter newlinesimage_picker for attachments; maxLines: null for auto-expanding TextField| File | Contents |
|---|---|
reference/quick-start.md | Entry-point wiring for Angular ChatComponent and Flutter ChatScreen |
reference/streaming-patterns.md | Streaming UX, auto-scroll, memoization, stop controls |
reference/context-management.md | Token indicator, threshold logic, summarization trigger |
reference/ai-error-handling.md | Refusal, rate limit, context exceeded, timeout, hallucination flag |
reference/feedback-loops.md | Thumbs up/down, copy, regenerate — Angular & Flutter |
reference/multimodal-input.md | File attach, preview chips, auto-expand textarea/field |
computed() / derived statecolorSchemeinject()@Input()/@Output() decorators — use input(), output(), model() signalsEdgeInsets numeric literals in Flutter — use AppSpacing tokensColor(0x...) literals in Flutter — use Theme.of(context).colorSchemeAfter implementation, dispatch these reviewer agents:
| Concern | Agent |
|---|---|
| Angular code quality | code-reviewer |
| Accessibility (ARIA, keyboard nav) | accessibility-auditor |
| Flutter/Riverpod patterns | riverpod-reviewer |
| Security (file uploads, content rendering) | security-reviewer |
| UI/UX consistency | ui-standards-expert |