← ClaudeAtlas

rwd-chainlisted

Apply this skill when the user writes pipeline/chain execution code, sequential function runners with error handling, decorator-wrapped steps, or asks to implement "rwd", "chain of decorators", "pipeline with profiling", or "NS_Container pattern". JavaScript implementation only. Uses Hungarian notation (s_Error, a_Log, f_RWD_Start_Time). Do NOT apply without explicit activation or clear pipeline/chain context.
InExSu/claude-skills · ★ 0 · AI & Automation · score 75
Install: claude install-skill InExSu/claude-skills
# RWD Chain Pattern (JavaScript) ## Core Idea Линейный конвейер, где каждый шаг — декорируемая функция. Шаги разделяют один мутабельный контейнер `NS_Container`. Если любой шаг устанавливает `s_Error` — цепочка останавливается. ``` v_RWD(v_step_One_RWD, ns) v_RWD(v_step_Two_RWD, ns) // пропускается, если step_One установил ns.s_Error v_RWD(v_step_Three_RWD, ns) // пропускается ``` --- ## 1. NS_Container ```javascript class NS_Container { constructor() { this.s_Error = ''; // пусто = ОК, не пусто = стоп this.f_RWD_Start_Time = 0.0; this.a_Log = []; this.a_Profile = []; // + доменные поля проекта } } ``` --- ## 2. v_RWD() — декоратор-исполнитель ```javascript function v_RWD(c_Fn, ns) { if (ns.s_Error !== '') return; const s_Name = s_callable_Name_Get(c_Fn); v_RWD_Start(s_Name, ns); c_Fn(ns); v_RWD_Finish(s_Name, ns); } ``` --- ## 3. Декораторы ```javascript function v_RWD_Start(s_Name, ns) { ns.f_RWD_Start_Time = performance.now(); const s_Msg = `[${new Date().toTimeString().slice(0, 8)}] START: ${s_Name}`; console.log(s_Msg); ns.a_Log.push(s_Msg); } function v_RWD_Finish(s_Name, ns) { const f_Duration = (performance.now() - ns.f_RWD_Start_Time) / 1000; const i_Memory = Math.round(process.memoryUsage().heapUsed / 1024 / 1024); const i_Memory_Peak = Math.round(process.memoryUsage().heapTotal / 1024 / 1024); let s_Msg = `[${new Date().toTimeString().slice(0, 8)}] FINISH: ${s_Name} (${f_Duration.toFixe