{"id":"78ed9b5f-5141-42d9-87fc-30105f3e67ac","shortId":"cDdeAf","kind":"skill","title":"refactor","tagline":"Use when refactoring, cleaning up code, reducing complexity, fixing code smells, or improving code quality. Audits TS/JS for dead code, nesting, and patterns.","description":"You are an expert code reviewer focused on refactoring.\n\nRead individual rule files in `rules/` for detailed explanations and code examples.\n\n## Rules Overview\n\n| Section | Prefix | Rules |\n|---|---|---|\n| General Patterns | `general-` | dead-code, deep-nesting, long-functions, magic-values, boolean-params, duplication |\n| TypeScript/JS Idioms | `ts-` | type-assertions, optional-chaining, nullish-coalescing, barrel-reexports, enum-union, async-await |\n| Design Principles | `design-` | single-responsibility, interface-segregation, god-objects, tight-coupling |\n\n## Workflow\n\n### Step 1: Audit\n\nScan the target scope (specific files, directory, or full codebase) for violations:\n\n**General Patterns**:\n- Commented-out code blocks\n- Functions exceeding ~40 lines\n- Nesting deeper than 3 levels\n- Hardcoded numbers/strings used in conditions or timeouts\n- Boolean parameters in function signatures\n\n**TypeScript/JS Idioms**:\n- `as` type assertions (excluding test files)\n- Chained `&&` for null checks where `?.` applies\n- `||` used for defaults where `??` is safer\n- Barrel `index.ts` re-export files (hurt tree-shaking, slow bundlers, risk circular deps)\n- String enums that could be union types\n- `.then()` chains in async code\n\n**Design Principles**:\n- Files with >10 named exports\n- Interfaces with >7 methods\n- Files importing from >5 sibling modules in the same layer\n\n### Step 2: Report\n\nList all findings grouped by category:\n\n```\n## Refactoring Audit Results\n\n### General Patterns\n- `src/services/order.ts:45` - Function `processOrder` is 62 lines → extract validation and submission\n- `src/utils/helpers.ts:12-18` - Commented-out code block → remove\n\n### TypeScript/JS Idioms\n- `src/api/client.ts:23` - `as UserResponse` → add type guard\n- `src/config.ts:8` - `port || 3000` → use `??` (port could be 0)\n\n### Design Principles\n- `src/services/user.ts` - 14 named exports → split into focused modules\n\n### Summary\n| Category             | Violations | Files |\n|----------------------|------------|-------|\n| General Patterns     | X          | N     |\n| TypeScript/JS Idioms | Y          | N     |\n| Design Principles    | Z          | N     |\n| **Total**            | **X+Y+Z** | **N** |\n```\n\n### Step 3: Fix\n\nApply refactorings. For each fix:\n1. Verify the change preserves existing behaviour\n2. Keep changes minimal — only fix the identified issue\n3. Do not introduce new abstractions unless clearly warranted","tags":["refactor","skills","tartinerlabs","agent-skills","automation","claude-code","claude-code-skills","cli","code-quality","developer-tools","github-actions","productivity"],"capabilities":["skill","source-tartinerlabs","skill-refactor","topic-agent-skills","topic-automation","topic-claude-code","topic-claude-code-skills","topic-cli","topic-code-quality","topic-developer-tools","topic-github-actions","topic-productivity","topic-tailwind-css"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/tartinerlabs/skills/refactor","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add tartinerlabs/skills","source_repo":"https://github.com/tartinerlabs/skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (2,424 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:13:56.869Z","embedding":null,"createdAt":"2026-05-07T20:43:03.634Z","updatedAt":"2026-05-18T19:13:56.869Z","lastSeenAt":"2026-05-18T19:13:56.869Z","tsv":"'-18':245 '0':269 '1':108,309 '10':201 '12':244 '14':273 '2':219,316 '23':255 '3':136,302,325 '3000':264 '40':131 '45':233 '5':211 '62':237 '7':206 '8':262 'abstract':330 'add':258 'appli':163,304 'assert':75,154 'async':89,195 'async-await':88 'audit':17,109,228 'await':90 'barrel':83,170 'barrel-reexport':82 'behaviour':315 'block':128,250 'boolean':67,145 'boolean-param':66 'bundler':181 'categori':226,281 'chain':78,158,193 'chang':312,318 'check':161 'circular':183 'clean':5 'clear':332 'coalesc':81 'code':7,11,15,21,29,44,56,127,196,249 'codebas':119 'comment':125,247 'commented-out':124,246 'complex':9 'condit':142 'could':188,267 'coupl':105 'dead':20,55 'dead-cod':54 'deep':58 'deep-nest':57 'deeper':134 'default':166 'dep':184 'design':91,93,197,270,292 'detail':41 'directori':116 'duplic':69 'enum':86,186 'enum-union':85 'exampl':45 'exceed':130 'exclud':155 'exist':314 'expert':28 'explan':42 'export':174,203,275 'extract':239 'file':37,115,157,175,199,208,283 'find':223 'fix':10,303,308,321 'focus':31,278 'full':118 'function':62,129,148,234 'general':51,53,122,230,284 'god':101 'god-object':100 'group':224 'guard':260 'hardcod':138 'hurt':176 'identifi':323 'idiom':71,151,253,289 'import':209 'improv':14 'index.ts':171 'individu':35 'interfac':98,204 'interface-segreg':97 'introduc':328 'issu':324 'keep':317 'layer':217 'level':137 'line':132,238 'list':221 'long':61 'long-funct':60 'magic':64 'magic-valu':63 'method':207 'minim':319 'modul':213,279 'n':287,291,295,300 'name':202,274 'nest':22,59,133 'new':329 'null':160 'nullish':80 'nullish-coalesc':79 'numbers/strings':139 'object':102 'option':77 'optional-chain':76 'overview':47 'param':68 'paramet':146 'pattern':24,52,123,231,285 'port':263,266 'prefix':49 'preserv':313 'principl':92,198,271,293 'processord':235 'qualiti':16 're':173 're-export':172 'read':34 'reduc':8 'reexport':84 'refactor':1,4,33,227,305 'remov':251 'report':220 'respons':96 'result':229 'review':30 'risk':182 'rule':36,39,46,50 'safer':169 'scan':110 'scope':113 'section':48 'segreg':99 'shake':179 'sibl':212 'signatur':149 'singl':95 'single-respons':94 'skill' 'skill-refactor' 'slow':180 'smell':12 'source-tartinerlabs' 'specif':114 'split':276 'src/api/client.ts':254 'src/config.ts':261 'src/services/order.ts':232 'src/services/user.ts':272 'src/utils/helpers.ts':243 'step':107,218,301 'string':185 'submiss':242 'summari':280 'target':112 'test':156 'tight':104 'tight-coupl':103 'timeout':144 'topic-agent-skills' 'topic-automation' 'topic-claude-code' 'topic-claude-code-skills' 'topic-cli' 'topic-code-quality' 'topic-developer-tools' 'topic-github-actions' 'topic-productivity' 'topic-tailwind-css' 'total':296 'tree':178 'tree-shak':177 'ts':72 'ts/js':18 'type':74,153,191,259 'type-assert':73 'typescript/js':70,150,252,288 'union':87,190 'unless':331 'use':2,140,164,265 'userrespons':257 'valid':240 'valu':65 'verifi':310 'violat':121,282 'warrant':333 'workflow':106 'x':286,297 'y':290,298 'z':294,299","prices":[{"id":"212e52fc-2286-4ec9-a95c-ee8c8a1e295a","listingId":"78ed9b5f-5141-42d9-87fc-30105f3e67ac","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"tartinerlabs","category":"skills","install_from":"skills.sh"},"createdAt":"2026-05-07T20:43:03.634Z"}],"sources":[{"listingId":"78ed9b5f-5141-42d9-87fc-30105f3e67ac","source":"github","sourceId":"tartinerlabs/skills/refactor","sourceUrl":"https://github.com/tartinerlabs/skills/tree/main/skills/refactor","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:01.541Z","lastSeenAt":"2026-05-18T19:13:56.869Z"},{"listingId":"78ed9b5f-5141-42d9-87fc-30105f3e67ac","source":"skills_sh","sourceId":"tartinerlabs/skills/refactor","sourceUrl":"https://skills.sh/tartinerlabs/skills/refactor","isPrimary":true,"firstSeenAt":"2026-05-07T20:43:03.634Z","lastSeenAt":"2026-05-07T22:41:57.718Z"}],"details":{"listingId":"78ed9b5f-5141-42d9-87fc-30105f3e67ac","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"tartinerlabs","slug":"refactor","github":{"repo":"tartinerlabs/skills","stars":7,"topics":["agent-skills","automation","claude-code","claude-code-skills","cli","code-quality","developer-tools","github-actions","productivity","tailwind-css"],"license":"mit","html_url":"https://github.com/tartinerlabs/skills","pushed_at":"2026-05-17T09:09:47Z","description":"Claude Code skills for git workflows, GitHub automation, security audits, code refactoring, and project tooling","skill_md_sha":"428bebf3137185cbebac25392988945b8ef2f862","skill_md_path":"skills/refactor/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/tartinerlabs/skills/tree/main/skills/refactor"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"refactor","description":"Use when refactoring, cleaning up code, reducing complexity, fixing code smells, or improving code quality. Audits TS/JS for dead code, nesting, and patterns."},"skills_sh_url":"https://skills.sh/tartinerlabs/skills/refactor"},"updatedAt":"2026-05-18T19:13:56.869Z"}}