
Write and refactor code using functional programming principles for fewer bugs and less code. Language-agnostic (TypeScript, Python, Go, Rust, Java, etc.). Activate when writing new functions, refactoring existing code, reviewing code quality, fixing bugs caused by state mutation, building data pipelines, or when the user mentions functional programming, pure functions, immutability, composition, or side effects. Also activate when generating any non-trivial business logic to default to FP patterns.
Never mutate data — create new values instead. Covers immutable update patterns (spread, copy, freeze), nested updates without mutation, readonly enforcement, and performance trade-offs. Activate when: updating objects or arrays, working with state management (React, Redux), fixing bugs caused by unintended mutation, deeply nested data updates, or when the user mentions immutability, spread, readonly, frozen, copy-on-write, or structural sharing. Works in any language (TypeScript, Python, Go, Rust, Java).
Build complex behavior by composing small, reusable functions. Covers currying, partial application, pipe/flow, data-last design, and building utility libraries from tiny pieces. Activate when: creating utility functions, building data processing pipelines, chaining transformations, refactoring large functions into smaller ones, or when the user mentions pipe, compose, curry, partial application, point-free, data-last, or function composition. Works in any language (TypeScript, Python, Go, Rust, Java).
Access Azure DevOps resources (PRs, builds, pipelines, releases, variable groups) for the Cupix organization. TRIGGER when: user pastes a dev.azure.com URL; user mentions Azure DevOps, ADO, az pr, az pipeline, build status, release status, or deploy status for Cupix projects; user asks about PR reviews, build logs, pipeline runs, or release progress. SKIP: general git questions not about Azure DevOps; GitHub-only workflows.
Search and query Elasticsearch/Kibana database models using curl API. Use for querying database models, searching Kibana indices, checking Elasticsearch data, investigating data in Kibana, finding records by ID, searching documents. Supports multiple environments (dev, qa, stage, production-us, production-au, production-eu).
Search Slack messages, read threads, find channels and users. Use when the user asks to find Slack messages, read a Slack thread/link, locate a channel, or look up a person. MCP-free — uses Bun scripts calling Slack Web API directly.
Search and analyze Datadog logs and metrics using API for cupixworks-api and cupixworks-worker services. Use when debugging errors, investigating issues, searching logs, analyzing worker jobs, checking Sidekiq logs, querying metrics, or finding specific log entries by class/function names. Supports error/warn/info log levels with 14-day retention for logs.
Create, update, search, transition, link, and read comments on Jira issues via CLI. MUST use this skill whenever the user pastes or mentions any atlassian.net URL (Jira issues, Confluence pages, focusedCommentId links, board links — anything from *.atlassian.net). Also use for: TSLA-* ticket references, JQL searches, issue status changes, reading comments, creating bugs, updating descriptions. This is the ONLY way to interact with Jira/Atlassian — there is no MCP Atlassian available.
Search Cupix Watch (Kibana/Elasticsearch) application logs at watch.cupix.com. Use when the user asks to search logs, find errors, debug processing issues, or investigate service behavior. Triggers on keywords like "log", "watch", "kibana", "error log", service names (skat, pano, api, worker, vista), or mentions of cupix processing pipelines.
Design system architecture using functional programming principles. Pure core with impure shell, state machines as data, memoization of pure functions, type-driven development with branded types, and event sourcing patterns. Activate when: designing system architecture, separating business logic from I/O, modeling state transitions, implementing caching/memoization, creating domain models, preventing invalid states through types, or when the user mentions architecture, pure core, impure shell, state machine, memoization, branded types, event sourcing, or domain modeling. Works in any language (TypeScript, Python, Go, Rust, Java).
Apply functional programming to asynchronous operations. Lazy evaluation with generators/iterators, async pipelines, parallel vs sequential execution, retry with backoff, fallback chains, and stream composition. Activate when: building async workflows, processing data streams, implementing retry logic, handling concurrent operations, working with generators/iterators, or when the user mentions lazy evaluation, async pipeline, parallel execution, retry, backoff, stream processing, or iterator patterns. Works in any language (TypeScript, Python, Go, Rust, Java).
Handle errors as values instead of throwing exceptions. Result/Either pattern, railway-oriented programming, and validation with error accumulation. Activate when: writing error handling, try/catch blocks, validation logic, operations that can fail, chaining fallible operations, form validation, API input validation, or when the user mentions Result, Either, error handling, or validation patterns. Works in any language (TypeScript, Python, Go, Rust, Java).
Use ONLY when the user explicitly says: 'use the skill web-to-markdown ...' (or 'use a skill web-to-markdown ...'). Converts webpage URLs to clean Markdown by calling the local web2md CLI (Puppeteer + Readability), suitable for JS-rendered pages.