Install
$ agentstack add skill-kumaran-is-claude-code-onboarding-ai-chat ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Iron Law: Load this skill before building any chat interface; never hardcode streaming or message formats without verifying against the skill's patterns.
AI Chat Interface Skill
> Tech Stack: Angular 21.x (signals, daisyUI, TailwindCSS) | Flutter 3.41.x (Riverpod, Dart 3.10.9)
When to Activate
Load this skill when the task involves any of:
- Streaming LLM response rendering (SSE / chunked HTTP)
- Chat message list with assistant/user bubbles
- Token context window indicators
- Regenerate / stop generation controls
- Thumbs up/down feedback collection
- Multi-modal input (file/image attachment in a chat box)
- AI-specific error states (refusal, rate limit, context exceeded)
- Tool call visualization in the message thread
Pre-Code Checklist
Before writing any component:
- Angular: Read
angular-spaskill — verify signal/OnPush/daisyUI baseline - Flutter: Read
flutter-mobileskill — verify Riverpod/AppSpacing/colorScheme baseline - Docs: Use
Context7MCP for any library not confirmed in this session (e.g.,marked,flutter_markdown)
Core Component Overview
| 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 |
Quick Start
See reference/quick-start.md for entry-point wiring (Angular ChatComponent + Flutter ChatScreen).
Key Patterns (brief — details in reference files)
Streaming (Angular)
- Use
AbortControllerto cancel in-flight SSE streams - Auto-scroll: scroll only when user is within 100px of bottom
computed()signal to derive rendered markdown — prevents re-parsing on every chunkaria-live="polite"wraps the message list
Streaming (Flutter)
AsyncNotifierwithStream.listenupdatesstateincrementallyScrollController+addPostFrameCallbackfor auto-scroll after frame- Check
MediaQuery.of(context).disableAnimationsbefore scroll animations
Token Context
- Angular:
TokenIndicatorComponentuses daisyUIprogress+text-warning/text-errorclasses at 80%/100% thresholds - Flutter:
LinearProgressIndicatorwithcolorScheme.error/colorScheme.tertiary - Always display "~N messages remaining" not raw token numbers
AI Errors
- Every AI error type has a distinct UI state — see
reference/ai-error-handling.md - NEVER swallow AI errors silently — always show user-visible feedback with an action
Feedback
- Angular:
signaltracks selected thumb; regenerate re-emits prompt - Flutter:
HapticFeedback.lightImpact()on thumb press;colorScheme.primaryfor active state
Multi-Modal Input
- Angular: Angular CDK drag-drop for file zone;
Entersends,Shift+Enternewlines - Flutter:
image_pickerfor attachments;maxLines: nullfor auto-expanding TextField
Reference Files
| 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 |
Anti-Patterns — Hard Prohibitions
- NEVER re-parse markdown on every streaming chunk — memoize with
computed()/ derived state - NEVER auto-scroll unconditionally — it steals user scroll position mid-read
- NEVER display raw token counts to end users — use human-readable approximations
- NEVER silently ignore AI error responses — every error must log + show user feedback
- NEVER hardcode colors for error/warning states — use daisyUI tokens or
colorScheme - NEVER use constructor DI in Angular — use
inject() - NEVER use
@Input()/@Output()decorators — useinput(),output(),model()signals - NEVER use raw
EdgeInsetsnumeric literals in Flutter — useAppSpacingtokens - NEVER use
Color(0x...)literals in Flutter — useTheme.of(context).colorScheme
Post-Code Review
After 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 |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: kumaran-is
- Source: kumaran-is/claude-code-onboarding
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.