mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 16:14:54 +03:00
Add script-based /role-compile and /role-validate skills
Convert /role-compile from instruction-based to PowerShell script with JSON DSL: - Presets (@view, @edit, @use) for common right sets - String shorthand and object form with RLS support - Russian synonym translation for object types and rights - Auto UUID generation, UTF-8 BOM output Add /role-validate for structural validation of Rights.xml: - XML well-formedness, namespace, global flags - Right name validation per object type with typo suggestions - RLS condition and template checks - Optional metadata validation (UUID, Name, Synonym) Update README and role-guide with new skills documentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+102
-16
@@ -1,13 +1,73 @@
|
||||
# Роли (Role)
|
||||
|
||||
Навыки группы `/role-*` позволяют анализировать и создавать роли 1С — XML-файлы прав доступа (Rights.xml) и метаданных.
|
||||
Навыки группы `/role-*` позволяют анализировать, создавать и проверять роли 1С — XML-файлы прав доступа (Rights.xml) и метаданных.
|
||||
|
||||
## Навыки
|
||||
|
||||
| Навык | Параметры | Описание |
|
||||
|-------|-----------|----------|
|
||||
| `/role-info` | `<RightsPath>` | Компактная сводка прав: объекты по типам, только разрешённые, RLS, шаблоны |
|
||||
| `/role-compile` | `<RoleName> <RolesDir>` | Создание роли: метаданные + Rights.xml по описанию прав |
|
||||
| `/role-compile` | `<JsonPath> <RolesDir>` | Генерация роли из JSON DSL: метаданные + Rights.xml, UUID автоматически |
|
||||
| `/role-validate` | `<RightsPath> [MetadataPath]` | Валидация структурной корректности: XML, namespace, права, RLS, шаблоны |
|
||||
|
||||
## Рабочий цикл
|
||||
|
||||
```
|
||||
Описание прав (текст) → JSON DSL → /role-compile → XML-исходники → /role-validate
|
||||
→ /role-info
|
||||
```
|
||||
|
||||
1. Claude формирует JSON-определение роли (с пресетами или явными правами)
|
||||
2. `/role-compile` генерирует `Roles/ИмяРоли.xml` + `Roles/ИмяРоли/Ext/Rights.xml`
|
||||
3. `/role-validate` проверяет корректность сгенерированного XML
|
||||
4. `/role-info` выводит компактную сводку для визуальной проверки
|
||||
|
||||
## JSON DSL — компактный формат
|
||||
|
||||
Роли описываются в JSON с двумя уровнями детализации:
|
||||
|
||||
### Строковый shorthand (простые роли)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "ЧтениеНоменклатуры",
|
||||
"synonym": "Чтение номенклатуры",
|
||||
"objects": [
|
||||
"Catalog.Номенклатура: @view",
|
||||
"Catalog.Контрагенты: @view",
|
||||
"DataProcessor.Загрузка: @use"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Формат строки: `Тип.Имя: @пресет` или `Тип.Имя: Право1, Право2`.
|
||||
|
||||
### Объектная форма (RLS, переопределения)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Document.Реализация",
|
||||
"preset": "view",
|
||||
"rights": { "Delete": false },
|
||||
"rls": { "Read": "#ДляОбъекта(\"\")" }
|
||||
}
|
||||
```
|
||||
|
||||
Форматы можно смешивать в одном массиве `objects`.
|
||||
|
||||
### Пресеты
|
||||
|
||||
| Пресет | Действие |
|
||||
|--------|----------|
|
||||
| `@view` | Просмотр: Read, View, InputByString (для справочников/документов); Read, View (для регистров) |
|
||||
| `@edit` | Полное редактирование: CRUD + Interactive* + Posting (для документов) |
|
||||
| `@use` | Использование: Use, View (для обработок/отчётов/сервисов) |
|
||||
|
||||
`@` обязателен в строковом shorthand. В объектной форме — ключ `preset` без `@`.
|
||||
|
||||
### Русские синонимы
|
||||
|
||||
Скрипт принимает русские имена типов и прав: `Справочник` → Catalog, `Чтение` → Read, `Проведение` → Posting и т.д. Полный список — в [SKILL.md навыка](../.claude/skills/role-compile/SKILL.md).
|
||||
|
||||
## Сценарии использования
|
||||
|
||||
@@ -22,15 +82,6 @@ Claude вызовет `/role-info`, получит компактную свод
|
||||
- где есть ограничения RLS
|
||||
- какие шаблоны ограничений используются
|
||||
|
||||
### Создание роли для регламентного задания
|
||||
|
||||
```
|
||||
> Проанализируй модуль регламентного задания ОбновлениеКурсовВалют
|
||||
> и создай роль с минимальными правами для его выполнения
|
||||
```
|
||||
|
||||
Claude проанализирует код, определит используемые объекты метаданных, и вызовет `/role-compile` для создания роли с нужными правами (Read, Update, Posting и т.д.).
|
||||
|
||||
### Создание роли по описанию
|
||||
|
||||
```
|
||||
@@ -41,11 +92,46 @@ Claude проанализирует код, определит использу
|
||||
> - Регистр ЦеныНоменклатуры: чтение
|
||||
```
|
||||
|
||||
Рабочий цикл:
|
||||
1. Claude генерирует `Roles/МенеджерПродаж.xml` (метаданные с UUID)
|
||||
2. Claude генерирует `Roles/МенеджерПродаж/Ext/Rights.xml` (права)
|
||||
3. Регистрирует роль в `Configuration.xml` (`<ChildObjects>`)
|
||||
4. Проверяет результат через `/role-info`
|
||||
Claude сформирует JSON с пресетами:
|
||||
```json
|
||||
{
|
||||
"name": "МенеджерПродаж",
|
||||
"synonym": "Менеджер продаж",
|
||||
"objects": [
|
||||
"Document.РеализацияТоваровУслуг: @edit",
|
||||
"Catalog.Контрагенты: @view",
|
||||
"Catalog.Номенклатура: @view",
|
||||
"InformationRegister.ЦеныНоменклатуры: @view"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
И вызовет `/role-compile` → `/role-validate` → `/role-info`.
|
||||
|
||||
### Создание роли для регламентного задания
|
||||
|
||||
```
|
||||
> Проанализируй модуль регламентного задания ОбновлениеКурсовВалют
|
||||
> и создай роль с минимальными правами для его выполнения
|
||||
```
|
||||
|
||||
Claude проанализирует код, определит используемые объекты, создаст JSON с точечными правами (без пресетов — только нужные права), и скомпилирует роль.
|
||||
|
||||
### Создание роли с RLS
|
||||
|
||||
```
|
||||
> Создай роль для чтения документов с ограничением по организации
|
||||
```
|
||||
|
||||
Claude использует объектную форму JSON с шаблонами ограничений.
|
||||
|
||||
### Проверка существующей роли
|
||||
|
||||
```
|
||||
> Проверь корректность роли Roles/МояРоль/Ext/Rights.xml
|
||||
```
|
||||
|
||||
Claude вызовет `/role-validate` и покажет результат: ошибки (невалидный XML, отсутствующие элементы) и предупреждения (неизвестные типы объектов, подозрительные имена прав с подсказками).
|
||||
|
||||
## Структура файлов роли
|
||||
|
||||
|
||||
Reference in New Issue
Block a user