architecture-design — скилл для Claude Code: архитектура ML-проектов
Задаёт структуру ML-проекта с фабриками и реестрами компонентов. Нужен, когда добавляете новый датасет или модель с декоратором регистрации.
npx skills add Galaxy-Dawn/claude-scholar --skill architecture-design -a claude-codeЧто делает architecture-design
Скилл описывает модульную раскладку проекта: run/ с пайплайнами и конфигами Hydra, src/ с модулями данных, моделей, тренера и анализа, data/ и outputs/. Внутри — три паттерна: фабрика создаёт объект по имени, декоратор @register_* кладёт класс в реестр, автo-импорт подхватывает подмодули из директории.
Применяйте его, когда заводите новый класс датасета с @register_dataset, модель с @register_model, новую директорию модуля с фабрикой в __init__.py или целый проект с нуля. Для правок существующих функций, починки багов и рефакторинга без новых регистрируемых компонентов он не нужен: если в задаче нет декоратора или фабрики, скилл пропускается.
Модели здесь конфиг-зависимые: __init__ принимает только cfg, все гиперпараметры берутся из конфига, а forward() возвращает словарь с loss, labels и logits. Режим обучения и инференса различается через self.training. Установка идёт через npx skills add, для GitHub Copilot — через gh skill install; файл скилла лежит в ~/.claude/skills/architecture-design/SKILL.md.
Какие задачи решает
- завести новый датасет с регистрацией в реестре
- добавить модель, читающую гиперпараметры из конфига
- собрать директорию модуля с фабрикой в
__init__.py - разложить структуру ML-проекта с нуля
- подключить новый тип компонента вроде аугментации или метрик
Примеры запросов агенту
- Создай новый датасет с
@register_datasetпо паттернам скилла - Добавь модель
MyModelс@register_model,__init__принимает толькоcfg - Разложи структуру нового ML-проекта по шаблону из скилла
Как установить architecture-design
1Через Skills CLI (Vercel)
npx skills add Galaxy-Dawn/claude-scholar --skill architecture-design -a claude-code2Вручную: положить файлы
~/.claude/skills/architecture-design/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/architecture-design/
1Через Skills CLI (Vercel)
npx skills add Galaxy-Dawn/claude-scholar --skill architecture-design -a codex2Вручную: положить файлы
.agents/skills/architecture-design/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Galaxy-Dawn/claude-scholar --skill architecture-design -a cursor2Вручную: положить файлы
.cursor/skills/architecture-design/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Galaxy-Dawn/claude-scholar architecture-design2Вручную: положить файлы
.github/skills/architecture-design/SKILL.md1Через Skills CLI (Vercel)
npx skills add Galaxy-Dawn/claude-scholar --skill architecture-design -a gemini-cli2Командой платформы
gemini skills install https://github.com/Galaxy-Dawn/claude-scholar --path skills/architecture-designВручную: положить файлы
.devin/skills/architecture-design/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Galaxy-Dawn/claude-scholar --skill architecture-design -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора29
Похожие
Рядом в теме «ИИ и ML»
Всё по теме «ИИ и ML» →Вопросы о architecture-design
Как установить architecture-design в Claude?
Выполните npx skills add Galaxy-Dawn/claude-scholar --skill architecture-design -a claude-code. Файл скилла окажется в ~/.claude/skills/architecture-design/SKILL.md.
Что делает architecture-design?
Описывает архитектуру ML-проекта на фабриках и реестрах: как регистрировать датасеты и модели, как устроены модули и конфиги Hydra.
Когда скилл не нужен?
При правках существующих функций, починке багов, добавлении утилит и рефакторинге без новых регистрируемых компонентов. Признак — в задаче нет декоратора @register_* и фабрики.
Исходный текст
SKILL.md · MIT
---
name: architecture-design
description: Use only when creating new registrable ML components that require Factory or Registry patterns.
version: 1.2.0
---
# Architecture Design - ML Project Template
This skill defines the standard code architecture for machine learning projects based on the template structure. When modifying or extending code, follow these patterns to maintain consistency.
## Overview
The project follows a modular, extensible architecture with clear separation of concerns. Each module (data, model, trainer, analysis) is independently organized using factory and registry patterns for maximum flexibility.
## When to Use
Use this skill when:
- Creating a new Dataset class that needs `@register_dataset`
- Creating a new Model class that needs `@register_model`
- Creating a new module directory with `__init__.py` factory wiring
- Initializing a new ML project structure from scratch
- Adding new component types such as Augmentation, CollateFunction, or Metrics
## When Not to Use
Do not use this skill when:
- Modifying existing functions or methods
- Fixing bugs in existing code
- Adding helper functions or utilities
- Refactoring without adding new registrable components
- Making simple code changes to a single file
- Modifying configuration files
- Reading or understanding existing code
Key indicator: if the task does not require a `@register_*` decorator or a Factory pattern, skip this skill.
## Core Design Patterns
### Factory Pattern
Each module uses a factory to create instances dynamically:
```python
# Example from data_module/dataset/__init__.py
DATASET_FACTORY: Dict = {}
def DatasetFactory(data_name: str):
dataset = DATASET_FACTORY.get(data_name, None)
if dataset is None:
print(f"{data_name} dataset is not implementation, use simple dataset")
dataset = DATASET_FACTORY.get('simple')
return dataset
```
For detailed guidance, refer to `references/factory_pattern.md`.
### Registry Pattern
Components register themselves via decorators:
```python
# Example from data_module/dataset/simple_dataset.py
@register_dataset("simple")
class SimpleDataset(Dataset):
def __init__(self, data):
self.data = data
```
For detailed guidance, refer to `references/registry_pattern.md`.
### Auto-Import Pattern
Modules automatically discover and import submodules:
```python
# Example from data_module/dataset/__init__.py
models_dir = os.path.dirname(__file__)
import_modules(models_dir, "src.data_module.dataset")
```
For detailed guidance, refer to `references/auto_import.md`.
## Directory Structure
```
project/
├── run/
│ ├── pipeline/ # Main workflow scripts
│ │ ├── training/ # Training pipelines
│ │ ├── prepare_data/ # Data preparation pipelines
│ │ └── analysis/ # Analysis pipelines
│ └── conf/ # Hydra configuration files
│ ├── training/ # Training configs
│ ├── dataset/ # Dataset configs
│ ├── model/ # Model configs
│ ├── prepare_data/ # Data prep configs
│ └── analysis/ # Analysis configs
│
├── src/
│ ├── data_module/ # Data processing module
│ │ ├── dataset/ # Dataset implementations
│ │ ├── augmentation/ # Data augmentation
│ │ ├── collate_fn/ # Collate functions
│ │ ├── compute_metrics/ # Metrics computation
│ │ ├── prepare_data/ # Data preparation logic
│ │ ├── data_func/ # Data utility functions
│ │ └── utils.py # Module-specific utilities
│ │
│ ├── model_module/ # Model implementations
│ │ ├── brain_decoder/ # Brain decoder models
│ │ └── model/ # Alternative model location
│ │
│ ├── trainer_module/ # Training logic
│ ├── analysis_module/ # Analysis and evaluation
│ ├── llm/ # LLM-related code
│ └── utils/ # Shared utilities
│
├── data/
│ ├── raw/ # Original, immutable data
│ ├── processed/ # Cleaned, transformed data
│ └── external/ # Third-party data
│
├── outputs/
│ ├── logs/ # Training and evaluation logs
│ ├── checkpoints/ # Model checkpoints
│ ├── tables/ # Result tables
│ └── figures/ # Plots and visualizations
│
├── pyproject.toml # Project configuration
├── uv.lock # Dependency lock file
├── TODO.md # Task tracking
├── README.md # Project documentation
└── .gitignore # Git ignore rules
```
For detailed directory structure with file descriptions, refer to `references/structure.md`.
## Module Organization
### Creating a New Dataset
When adding a new dataset:
1. Create file in `src/data_module/dataset/`
2. Use `@register_dataset("name")` decorator
3. Inherit from `torch.utils.data.Dataset`
4. Implement `__init__`, `__len__`, `__getitem__`
```python
from torch.utils.data import Dataset
from typing import Dict
import torch
from src.data_module.dataset import register_dataset
@register_dataset("custom")
class CustomDataset(Dataset):
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
def __getitem__(self, i: int) -> Dict[str, torch.Tensor]:
return self.data[i]
```
### Creating a New Model
**CRITICAL: Models use config-driven pattern**
When adding a new model:
1. Create file in `src/model_module/model/` or appropriate module subdirectory
2. Use `@register_model('ModelName')` decorator
3. `__init__` accepts **ONLY** `cfg` parameter - all hyperparameters come from config
4. `forward()` returns dict: `{"loss": loss, "labels": labels, "logits": logits}`
5. Handle training vs inference modes using `self.training`
```python
from src.model_module.brain_decoder import register_model
@register_model('MyModel')
class MyModel(nn.Module):
def __init__(self, cfg):
super().__init__()
self.cfg = cfg
self.task = cfg.dataset.task
# ALL parameters from cfg
self.hidden_dim = cfg.model.hidden_dim
self.output_dim = cfg.dataset.target_size[cfg.dataset.task]
def forward(self, x, labels=None, **kwargs):
if self.training:
# Training logic
pass
else:
# Inference logic
pass
return {"loss": loss, "labels": labels, "logits": logits}
```
### Adding Data Augmentation
When adding augmentation:
1. Create file in `src/data_module/augmentation/`
2. Implement transformation function
3. Register with factory if needed
## Code Style Guidelines
For comprehensive style guidelines, refer to `references/code_style.md`.
**Key principles:**
- Always use type hints for function signatures
- Follow import order: standard library → third-party → local
- Module `__init__.py` files contain factory/registry logic
- Model classes must be config-driven
## Configuration Management
The project uses Hydra for configuration management:
- Config files in `run/conf/` organize by module
- Each stage (training, analysis) has its own config structure
- Use YAML files for all configuration
## When Working on This Project
### Before Modifying Code
1. Read the relevant module's factory/registry pattern
2. Check existing implementations for consistency
3. Follow the established directory structure
4. Use registration decorators for new components
### Adding New Features
1. Determine which module the feature belongs to
2. Check if similar functionality exists
3. Follow factory/registry pattern if creating new component types
4. Add configuration files if needed
5. Update documentation
### Code Review Checklist
- [ ] Uses factory/registry pattern appropriately
- [ ] Follows module directory structure
- [ ] Has proper type annotations
- [ ] Imports are correctly ordered
- [ ] Registration decorator is used
- [ ] Configuration files are added if needed
## Additional Resources
### Reference Files
For detailed information, consult:
- **`references/structure.md`** - Detailed directory structure with file descriptions
- **`references/factory_pattern.md`** - Factory pattern in-depth explanation
- **`references/registry_pattern.md`** - Registry pattern in-depth explanation
- **`references/auto_import.md`** - Auto-import pattern in-depth explanation
- **`references/code_style.md`** - Comprehensive code style guidelines
### Example Files
Working examples in `examples/`:
- **`examples/custom_dataset.py`** - Custom dataset implementation
- **`examples/custom_model.py`** - Custom model implementation
- **`examples/augmentation_example.py`** - Data augmentation example
- **`examples/config_example.yaml`** - Configuration file example
- **`examples/pipeline_example.sh`** - Pipeline script example
© Galaxy-Dawn · MIT · Galaxy-Dawn/claude-scholar