codebase-design
Проектируйте глубокие модули с чёткими интерфейсами
Большинство кодовых баз страдают от неглубоких модулей с большими интерфейсами и тонкими реализациями. Этот навык предоставляет общий словарь и методологию для проектирования глубоких модулей, определения расположения швов и повышения тестируемости и поддерживаемости кода.
تنزيل ZIP المهارة
رفع في Claude
اذهب إلى Settings → Capabilities → Skills → Upload skill
فعّل وابدأ الاستخدام
اختبرها
استخدام "codebase-design". Проверь функцию processOrder. Является ли она глубоким модулем?
النتيجة المتوقعة:
- В настоящее время она неглубокая: processOrder(order) создаёт свой собственный StripeGateway внутри.
- Глубокая версия: processOrder(order, paymentGateway) принимает шлюз в качестве зависимости.
- Вызывающие могут подставлять тестовые или мок-шлюзы без изменения функции.
- Интерфейс получает один дополнительный параметр, но модуль становится тестируемым.
استخدام "codebase-design". Как мне классифицировать зависимость от кэша Redis?
النتيجة المتوقعة:
- Redis локально-заменяем: ioredis-mock или testcontainers-redis могут работать в тестах.
- Можно углубить, если заменитель существует.
- Тестируй с заменителем, работающим в тестовом наборе.
- Нет порта на внешнем интерфейсе, только внутренний шов.
التدقيق الأمني
آمنThe codebase-design skill is a pure documentation skill providing vocabulary and methodology for designing deep modules. All 35 static findings are false positives: 'Weak cryptographic algorithm' detections are triggered by the word 'deep' (confused with DES cipher references in unrelated codebases), 'Ruby/shell backtick execution' matches markdown backtick formatting for code blocks, and 'System reconnaissance' is a misidentification of architectural vocabulary. No executable code, scripts, or data flows exist in any file.
عوامل الخطر
⚙️ الأوامر الخارجية (8)
درجة الجودة
ماذا يمكنك بناءه
Проектирование интерфейса нового модуля
Разработчик хочет спроектировать чистый интерфейс для новой функциональности с максимальным рычагом для вызывающих сторон и минимальной площадью поверхности для тестов.
Рефакторинг неглубоких модулей в глубокие
Команда инженеров накопила неглубокие модули с тонкими реализациями и хочет объединить их в более глубокие, лучше тестируемые единицы.
Формирование общего архитектурного словаря
Команде нужен единый язык для обсуждения границ модулей, швов и адаптеров в код-ревью и проектных дискуссиях.
جرّب هذه الموجهات
Проверь интерфейс модуля [имя модуля]. Он глубокий или неглубокий? Могу ли я уменьшить количество методов или упростить параметры? Какую сложность можно скрыть внутри реализации?
Посмотри на эти [N] связанных неглубоких модулей. Может ли их объединение создать более глубокий модуль? Классифицируй их зависимости как внутрипроцессные, локально-заменяемые, удалённые-но-собственные или истинно внешние.
Мне нужно решить, где должен быть шов для [функциональность]. Примени тест удаления: если я удалю этот модуль, сложность исчезнет или распространится? Должен ли быть порт или только внутренний шов?
Запусти 3 подагента для проектирования радикально различных интерфейсов для [модуль]. Агент 1 должен минимизировать интерфейс, Агент 2 — максимизировать гибкость, а Агент 3 — оптимизировать для наиболее частого вызывающего.
أفضل الممارسات
- Используй точный словарь из этого навыка единообразно в команде и документации
- Применяй тест удаления для проверки того, что модуль оправдывает своё существование
- Вводи порт только тогда, когда оправдано как минимум два адаптера
- Пиши тесты на интерфейсе модуля, а не за его пределами
- Проектируй под два адаптера (продакшн и тест), прежде чем добавлять больше
تجنب
- Замена терминов «компонент», «сервис», «API» или «граница» точными терминами из этого навыка
- Введение швов только с одним адаптером
- Тестирование за пределами интерфейса путём проникновения во внутреннее состояние
- Рассмотрение глубины как отношения строк реализации к строкам интерфейса
- Сохранение старых модульных тестов на неглубоких модулях после консолидации