ワンクリックで
simplify
Use after manual code changes to improve clarity/readability without changing behavior. Not for AI slop cleanup.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use after manual code changes to improve clarity/readability without changing behavior. Not for AI slop cleanup.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use when implementing real-time DSP algorithms, audio thread architecture, or offline spectral analysis in C++/Rust. Covers filters, STFT pipelines, lock-free concurrency, and RT safety. Not for JUCE plugin lifecycle wiring or ffmpeg.
Use for real-time audio code safety, determinism, and numeric hygiene. Required foundation for DSP, audio analysis, audio systems, and JUCE work. Not for game-audio middleware or ffmpeg/video tasks.
Use when programmatically processing video/audio with libffmpeg C API. Not for command-line ffmpeg operations.
Use for JUCE audio apps/plugins: AudioProcessor lifecycle, VST3/AU targets, parameter systems, and thread separation. Requires audio-engineering-principles. Not for game-audio middleware or non-JUCE frameworks.
Use when writing, reviewing, or refactoring C++ code — covers workflow, essential patterns, and pre-commit checklist for modern C++17/20.
Use when writing or fixing C++ tests, configuring GoogleTest/CTest, or adding coverage/sanitizers.
| name | simplify |
| description | Use after manual code changes to improve clarity/readability without changing behavior. Not for AI slop cleanup. |
Refine recently modified code for clarity and consistency without changing behavior.
Before:
def proc(d):
r = []
for k in d:
if d[k] is not None:
if d[k] > 0:
r.append(k)
return r
After:
def positive_keys(data: dict) -> list:
return [key for key, value in data.items() if value is not None and value > 0]
The refactored version uses a descriptive name, type hints, and a single comprehension that reads as a sentence. Don't collapse further — splitting the condition across lines is acceptable if it aids readability.
Flatten when nesting is purely defensive or structural:
// Before — two levels of nesting for a simple guard
function process(items) {
if (items) {
if (items.length > 0) {
return items.map(transform)
}
}
return []
}
// After — early return eliminates nesting
function process(items) {
if (!items?.length) return []
return items.map(transform)
}
Extract when a block has a distinct purpose:
// Before — mixed concerns in one function
function handleSubmit(form) {
const errors = []
if (!form.email.includes('@')) errors.push('Invalid email')
if (form.password.length < 8) errors.push('Password too short')
if (errors.length > 0) { showErrors(errors); return }
submitToAPI(form)
}
// After — validation extracted with a clear name
function validateForm(form): string[] {
const errors = []
if (!form.email.includes('@')) errors.push('Invalid email')
if (form.password.length < 8) errors.push('Password too short')
return errors
}
function handleSubmit(form) {
const errors = validateForm(form)
if (errors.length > 0) { showErrors(errors); return }
submitToAPI(form)
}
fetchUser, parseConfig, is_valid)is_/has_/can_ prefixdata, info, obj, temp, helper, utils as primary names — qualify them (orderData, configInfo)i in a loop, e in a catch)