From dotnet-doc-skills
Генерирует внешнюю Markdown-документацию для C#/.NET классов: отдельный .md-файл на каждый класс с таблицей свойств, разделом каждого метода (параметры, возвращаемое значение, исключения) и сводным описанием класса в конце. Структура папок documentation/api/ повторяет структуру solution. Ставит гиперссылки на унаследованные типы и на типы из других файлов проекта. Используй, когда пользователь говорит «сгенерируй .md для класса», «создай внешнюю документацию», «сделай markdown-описание», «doc-md». Это НЕ генератор inline XML-doc комментариев (для этого — doc-cs) и НЕ реверс- инжиниринг схемы БД (для этого — doc-db).
How this skill is triggered — by the user, by Claude, or both
Slash command
/dotnet-doc-skills:doc-md путь к .cs-файлу, классу или папке (корень solution)путь к .cs-файлу, классу или папке (корень solution)This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Pass 1 (реестр типов) выполняется последовательно в главной сессии.**
Pass 1 (реестр типов) выполняется последовательно в главной сессии. Pass 2/3 на больших проектах распараллеливаются субагентами — см. раздел «Обработка больших проектов (параллелизм ≤ 10)».
Glob("**/*.cs").public (partial|abstract|sealed|static)?\s+class\s+(\w+)(\s*:\s*[\w,\s<>]+)?^namespace\s+([\w.]+)(public|protected|internal)[^;{]+\{[^}]*get[^}]*\}(public|protected|internal)[^(]+\([^)]*\)public\s+ClassName\s*\(/// <summary>…</summary> над членамиClassName → relative/path/File.cs.
Он нужен для разрешения межфайловых ссылок на шаге 3.Для каждого класса сначала сформируй frontmatter строго по
references/frontmatter-schema.md (первым блоком файла). Поле tables:
заполни по SQL-литералам (INSERT INTO, FROM, UPDATE, DELETE FROM) и
обращениям dr["…"] в теле класса, в формате СХЕМА.ТАБЛИЦА — это мост к
doc-db. Затем тело:
Заголовок класса:
abstract, sealed, partial).Таблица свойств — все public/protected свойства:
<summary> XML-doc; если нет — эвристика по имени.Разделы методов — каждый public/protected метод и конструктор:
### \ReturnType MethodName(params)``.<summary> или эвристика).throw или очевиден из ADO.NET).INSERT / UPDATE / SELECT / DELETE) и таблицу.Сводное описание класса (раздел в конце):
Межфайловые ссылки. Для каждого типа в таблицах свойств и сигнатурах методов:
[ClassName](относительный/путь/ClassName.md)..md-файла.Ссылки на наследование. В заголовке класса:
**Наследует:** [BaseClass](../path/BaseClass.md) (если в реестре).**Реализует:** [IFoo](../path/IFoo.md), [IBar](../path/IBar.md).Зеркалирование структуры папок.
documentation/api/ в корне solution.src/DataAccess/Dico/SvItemDao.cs → documentation/api/DataAccess/Dico/SvItemDao.md..cs-файл, создай только один .md рядом в documentation/api/.Bash: mkdir -p <путь> перед записью.Запись файлов через Write. Один .md = один класс. Если в одном .cs несколько классов — несколько .md-файлов.
Оглавление documentation/api/index.md. После записи всех классов сгенерируй
или обнови индекс по assets/index.md.template: список задокументированных
классов, сгруппированный по namespace, с колонками Класс | Слой | Таблицы |
Описание и ссылками на .md. Это единая точка входа и индекс для поиска; в
шапку добавь ссылку на database.md. На параллельных прогонах индекс
собирает главная сессия после всех волн субагентов.
Полный шаблон — assets/class.md.template. Итоговая структура файла:
---
title: ClassName
type: class
namespace: My.DataAccess.Dico
layer: data-access
source: src/DataAccess/Dico/ClassName.cs
tables: [DICT.SV_ITEM]
tags: [repository, oracle, crud]
summary: Репозиторий справочника «Уровни доступа».
---
# `ClassName`
**Namespace:** `My.DataAccess.Dico`
**Файл:** [`src/DataAccess/Dico/ClassName.cs`](../../src/DataAccess/Dico/ClassName.cs)
**Наследует:** [`BaseRepo`](../common/BaseRepo.md)
**Реализует:** [`IDisposable`](), [`IRepository<SvItem>`]()
---
## Свойства
| Свойство | Тип | Доступ | Описание |
|---|---|---|---|
| `ConnectionString` | `string` | `public` | Строка подключения к Oracle. |
| `Context` | [`AppContext`](../AppContext.md) | `public` | Контекст приложения. |
---
## Конструкторы
### `ClassName(AppContext context)`
Инициализирует репозиторий с переданным контекстом приложения.
| Параметр | Тип | Описание |
|---|---|---|
| `context` | [`AppContext`](../AppContext.md) | Контекст с настройками подключения. |
---
## Методы
### `long Insert(SvItem m)`
Вставляет новую запись в `DICT.SV_ITEM`.
**Операция БД:** `INSERT` → `DICT.SV_ITEM`.
| Параметр | Тип | Описание |
|---|---|---|
| `m` | [`SvItem`](../models/SvItem.md) | DTO новой записи; `m.Guid` обязателен. |
**Возвращает:** количество вставленных строк (ожидается `1`).
**Исключения:** `OracleException` — при нарушении уникальности `SV_GUID`.
См. также: [`Update`](#updatesvitem-m), [`GetById`](#getbyidlong-id).
---
### `SvItem GetById(long id)`
Возвращает запись справочника по первичному ключу.
**Операция БД:** `SELECT` → `DICT.SV_ITEM WHERE SV_ID = :p_ID`.
| Параметр | Тип | Описание |
|---|---|---|
| `id` | `long` | Первичный ключ `SV_ID`. |
**Возвращает:** экземпляр [`SvItem`](../models/SvItem.md) или `null` если запись не найдена.
---
## Описание класса
`ClassName` — репозиторий доступа к справочнику «Уровни доступа» (`DICT.SV_ITEM`).
Реализует полный CRUD через `Oracle.ManagedDataAccess`. Используется слоем сервисов
для управления ролями пользователей клиентского приложения.
**Зависимости:** [`AppContext`](../AppContext.md), `Oracle.ManagedDataAccess.Client`.
**Используется в:** [`AccessService`](../services/AccessService.md).
Опциональный режим. Для небольшого проекта работай последовательно — параллелизм нужен только когда классов много и важно время прогона.
ClassName → путь)
строится один раз до диспетча. Иначе субагенты сгенерируют межфайловые
ссылки на реестр, который каждый «угадал» по-своему, и cross-links разъедутся.Task). Запусти до 10 вызовов Task в одном сообщении,
дождись завершения волны, затем следующую..cs-файлов/классов;references/frontmatter-schema.md — обязан прочитать до записи,
иначе имена и регистр полей frontmatter разъедутся между агентами и поиск
по полю сломается;documentation/api/.index.md собирает главная сессия после всех волн — только у неё полный
список классов.— в таблице..md, не от корня.#method-name) формируй по правилу GitHub Markdown: lowercase, пробелы → -, спецсимволы убрать.partial — собери все части в один .md.override или реализует интерфейс — добавь строку **Переопределяет:** [BaseClass.MethodName](...)./// комментарии в .cs-файлах — только .md.protected члены — они важны для понимания наследования.README.md на всё — строго по одному .md на класс./// в .cs — это doc-cs, переключайся.doc-db, переключайся.npx claudepluginhub tdav/auto.documentation.code --plugin dotnet-doc-skillsSearches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.