Decomposition 2026 11 05
ASecurityГраф (3 узла): - **Вложенность в 4 уровня** — что: три `if` друг в друге; почему: читатель держит 3 состояния в голове; якорь: строки 2–9; когда: при чтении. - **Ветка `else: return False` повторена трижды** — что: один и тот же выход в трёх местах; почему: правка условия требует правки в трёх местах; якорь: строки 6, 8, 9; когда: при изменении. - **Условия не названы** — что: `user`, `user.active`, `user.age >= 18` свалены в одну проверку; почему: непонятно, какое из них упало; якорь: строки...
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added November 11, 2026
Security analysis
100/100Pro scans all 21 files and shows the line behind each finding
npx -y skills add Siririn77/i-have-autism --skill decomposition-2026-11-05 --agent claude-codeAre you the author of Decomposition 2026 11 05?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/siririn77-decomposition-2026-11-05-6ccd8e26)Граф (3 узла):
- **Вложенность в 4 уровня** — что: три `if` друг в друге; почему: читатель держит 3 состояния в голове; якорь: строки 2–9; когда: при чтении.
- **Ветка `else: return False` повторена трижды** — что: один и тот же выход в трёх местах; почему: правка условия требует правки в трёх местах; якорь: строки 6, 8, 9; когда: при изменении.
- **Условия не названы** — что: `user`, `user.active`, `user.age >= 18` свалены в одну проверку; почему: непонятно, какое из них упало; якорь: строки 2–4; когда: при отладке.
```python
def check(user):
if not user:
return False
if not user.active:
return False
return user.age >= 18
```
Что теперь работает: один выход на каждое условие, вложенности нет, порядок проверок читается сверху вниз.
Проверить:
```python
assert check(None) is False
assert check(User(active=False, age=30)) is False
assert check(User(active=True, age=17)) is False
assert check(User(active=True, age=18)) is True
```
Одно отличие, которое я **не** менял: `if not user` — это проверка истинности, а не `is None`. Если `user` равен `0`, `""` или объекту с `__bool__ = False`, исходная функция вернула бы `False`, и новая тоже. Замена на `if user is None` изменила бы поведение — не делайте её.
Короче, если нужна одна строка, тот же результат:
```python
def check(user):
return bool(user and user.active and user.age >= 18)
```
Но она возвращает `bool(...)` от `user`, а не строго `False`; на `None` это даёт `False`, на объекте с `__bool__ = False` — тоже `False`, поведение совпадает. Выбирайте её, только если тесты выше проходят.Files in this skill
- SCORE.md
- answer-estimate_with-skill.md
- answer-estimate_without-skill.md
- answer-next-step_with-skill.md
- answer-next-step_without-skill.md
- answer-no-preamble_with-skill.md
- answer-no-preamble_without-skill.md
- cases.json
- code-edge-negative_with-skill.md
- code-edge-negative_without-skill.md
- comment-says-why_with-skill.md
- comment-says-why_without-skill.md
- decomposition-huge_with-skill.md
- decomposition-huge_without-skill.md
- decomposition-small_with-skill.md
- decomposition-small_without-skill.md
- destructive-needs-confirmation_with-skill.md
- destructive-needs-confirmation_without-skill.md
- disagree-first-line_with-skill.md
- disagree-first-line_without-skill.md
Attribution
Related skills
View all in ai-agents →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.