원클릭으로
jetlinks-reactive
在当前 JetLinks 工作区中应用响应式与非阻塞实现实践。适用于需要处理 Mono 或 Flux 链路、避免阻塞调用、批量化响应式 CRUD 副作用,或判断响应式处理器如何与事件、订阅和远程调用协作的场景。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
在当前 JetLinks 工作区中应用响应式与非阻塞实现实践。适用于需要处理 Mono 或 Flux 链路、避免阻塞调用、批量化响应式 CRUD 副作用,或判断响应式处理器如何与事件、订阅和远程调用协作的场景。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
在当前 JetLinks 工作区中应用共享编码规范。适用于需要确认注解和导入、遵循本地命名与包结构、保持最小改动,判断模块是否应该补 i18n,实现 LocaleUtils、I18nEnumDict、messages_zh/messages_en、权限动作文案,补充 TraceHolder / MonoTracer / FluxTracer 链路追踪埋点,为常驻任务、缓存、队列等能力设计 MBean 运维可观测性,平衡人类可读性与大模型理解成本来编写代码注释,或当具体场景暴露公共组件、基类、框架、工具类等通用能力缺口时避免硬编码特调并从共同根因修复的场景。
在 JetLinks 脚手架中实现标准或高级 CRUD 开发。适用于需要新增或修改实体、服务、控制器、查询流程、批量更新,或处理与 CRUD 相关副作用,同时遵循当前模块现有风格的场景。
将 JetLinks 开发请求路由到当前工作区中最合适的 focused skill。适用于尚不确定应使用哪个 JetLinks 技能,或任务同时涉及模块落点、通用编码规范、响应式实践、CRUD、跨边界调用、事件与订阅流程、前端页面改造以及交付准备的场景。
沉淀 JetLinks 开发过程中的可复用知识。适用于任务完成后判断是否值得沉淀、先给出沉淀建议,并在用户确认后将经验整理为 worklog、knowledge、playbook、提示词或 skill 更新;若已成熟到可抽成通用 skill,则继续询问是否并入官方技能仓库 PR 的场景。
发现 JetLinks 工作区结构并选择正确模块,必要时创建新模块。适用于需要梳理当前仓库结构、定位业务模块、识别软链接模块,或在低上下文脚手架中创建新模块的场景。
为 JetLinks 代码变更准备合规交付内容。适用于需要创建符合分支策略的提交、起草或审查中文 Conventional Commit、生成 shell 可执行的 git commit 命令、遵循 JetLinks 提交标题规范、避免直推受保护分支、落实后端新增功能或行为变动的测试门禁、收集测试证据,或编写包含测试、覆盖率、代码注释 / 公共契约(含 SPI 必要 @since / @see)、TraceHolder 与 MBean 运维可观测性结论的 PR 描述的场景。
| name | jetlinks-reactive |
| description | 在当前 JetLinks 工作区中应用响应式与非阻塞实现实践。适用于需要处理 Mono 或 Flux 链路、避免阻塞调用、批量化响应式 CRUD 副作用,或判断响应式处理器如何与事件、订阅和远程调用协作的场景。 |
Read references/reactive-practice.md first.
../jetlinks-router/references/backend-design-test-driven-rules.md: write the design draft and realistic test goals to the appropriate docs directory and wait for explicit user confirmation.Mono or Flux end-to-end and avoid imperative fallbacks.../jetlinks-conventions/references/code-comments.md: async boundaries, backpressure or collection limits, cancellation / retry / timeout behavior, lifecycle cleanup, tracing context propagation, compatibility, and extracted business stages whose purpose is not obvious from the method name.$jetlinks-crud, $jetlinks-boundary, or $jetlinks-events when the task spans those scenarios.block() inside reactive business flows unless the current module already does so for the same boundary and there is no safer local alternative.subscribe() for core business control flow.CompletableFuture.get(...), Thread.sleep, or busy-wait loops to coordinate with a reactive result; use flatMap / zip / then / concatMap / Sinks / events / commands instead.static state or ThreadLocal to fake non-blocking propagation.Publisher / Subscriber / Subscription demand, cancellation, and terminal signals as the official reactive boundary. A chain starts at an existing Publisher or the first real async I/O boundary, not at a local object.map / filter / flatMap / zip / then should express one semantic step.Mono.just(...).map(...), adjacent .map(...).map(...) for one synchronous business step, .flatMap(Mono::just), identity map, redundant then(Mono.just(...)), or adjacent .filter().filter(...) when the value can be computed before wrapping, synchronous steps can be composed into a named function, thenReturn(...) is clearer, or predicates can be combined / extracted.validateAndSendCommand(...) or saveLogAndReturn(...).Mono.just(request) only to transform a local value before the first async boundary; compute the argument directly and call the reactive API, such as repository.save(request.toEntity()).MonoTracer / FluxTracer or the existing domain tracer to create manual spans and attributes; route detailed TraceHolder rules to ../jetlinks-conventions/references/tracing.md.Mono / Flux. Data conversion, field calculation, predicate checks, and other non-I/O logic should remain plain methods and be called from map, filter, or before entering the chain.collectList() on unbounded or potentially large streams; only collect when the source is clearly bounded by page, limit, batch, protocol size, or validated input size. Prefer pagination, bounded buffer / window, streaming, or existing query-composition helpers.try/catch, or multiple DB / remote calls, extract a named method and test that method through the reactive chain.../jetlinks-conventions/references/root-cause-and-no-hack-rules.md: solve at the root via official extension points / adjacent abstractions / dependency choice, or inform the user with concrete trade-offs; do not use reflection / visibility hacks / copied source / silent catch to make the chain compile.map / flatMap glue with self-explanatory method names.