feat(skd,subsystem): add -Value param to skd-compile, full mode to skd-info and subsystem-info

- skd-compile: replace mandatory -JsonPath with -DefinitionFile/-Value pair,
  allowing inline JSON without temp files
- skd-info: extract 6 mode bodies into functions, add -Mode full combining
  overview+query+fields+resources+params+variant in one call
- subsystem-info: extract overview/content/ci into functions, add -Mode full
  combining all three in one call
- Update SKILL.md docs and guides accordingly

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-02-16 18:29:00 +03:00
co-authored by Claude Opus 4.6
parent 2a4d2bf8df
commit 7268b169d8
8 changed files with 278 additions and 204 deletions
+3 -2
View File
@@ -1,7 +1,7 @@
---
name: skd-info
description: Анализ структуры схемы компоновки данных 1С (СКД) — наборы, поля, параметры, варианты. Используй для понимания отчёта — источник данных (запрос), доступные поля, параметры
argument-hint: <TemplatePath> [-Mode overview|query|fields|links|calculated|resources|params|variant|templates|trace] [-Name <dataset|variant|field|group>]
argument-hint: <TemplatePath> [-Mode overview|query|fields|links|calculated|resources|params|variant|templates|trace|full] [-Name <dataset|variant|field|group>]
allowed-tools:
- Bash
- Read
@@ -54,8 +54,9 @@ powershell.exe -NoProfile -File .claude\skills\skd-info\scripts\skd-info.ps1 -Te
| `variant` | Список вариантов | Структура группировок + фильтры + вывод |
| `templates` | Карта привязок шаблонов (field/group) | Содержимое шаблона: строки, ячейки, выражения |
| `trace` | — | Полная цепочка: набор → вычисление → ресурс |
| `full` | Полная сводка: overview + query + fields + resources + params + variant | — |
Паттерн: без `-Name` — карта/индекс, с `-Name` — деталь конкретного элемента.
Паттерн: без `-Name` — карта/индекс, с `-Name` — деталь конкретного элемента. Режим `full` объединяет 6 ключевых режимов в один вызов.
## Типичный workflow
+61 -19
View File
@@ -3,7 +3,7 @@
param(
[Parameter(Mandatory=$true)]
[string]$TemplatePath,
[ValidateSet("overview", "query", "fields", "links", "calculated", "resources", "params", "variant", "trace", "templates")]
[ValidateSet("overview", "query", "fields", "links", "calculated", "resources", "params", "variant", "trace", "templates", "full")]
[string]$Mode = "overview",
[string]$Name,
[int]$Batch = 0,
@@ -289,11 +289,7 @@ for ($i = $pathParts.Count - 1; $i -ge 0; $i--) {
$totalXmlLines = (Get-Content $resolvedPath).Count
# ============================================================
# MODE: overview
# ============================================================
if ($Mode -eq "overview") {
function Show-Overview {
$lines.Add("=== DCS: $templateName ($totalXmlLines lines) ===")
$lines.Add("")
@@ -482,7 +478,9 @@ if ($Mode -eq "overview") {
$lines.Add(" [$varIdx] $vName$vPresStr$structStr$filterStr")
}
}
}
function Show-OverviewHints {
# Hints — suggest next commands
$lines.Add("")
$hints = @()
@@ -519,27 +517,35 @@ if ($Mode -eq "overview") {
if ($totalCount -gt 0) {
$hints += "-Mode resources resource aggregation ($totalCount)"
}
$params = $root.SelectNodes("s:parameter", $ns)
if ($params.Count -gt 0) {
$hints += "-Mode params parameter details"
}
$variants = $root.SelectNodes("s:settingsVariant", $ns)
if ($variants.Count -eq 1) {
$hints += "-Mode variant variant structure"
} elseif ($variants.Count -gt 1) {
$hints += "-Mode variant -Name <N> variant structure (1..$($variants.Count))"
}
$tplDefs = $root.SelectNodes("s:template", $ns)
if ($tplDefs.Count -gt 0) {
$hints += "-Mode templates template bindings and expressions"
}
$hints += "-Mode trace -Name <f> trace field origin (by name or title)"
$hints += "-Mode full all sections at once"
$lines.Add("Next:")
foreach ($h in $hints) { $lines.Add(" $h") }
}
# ============================================================
# MODE: query
# MODE: overview
# ============================================================
elseif ($Mode -eq "query") {
if ($Mode -eq "overview") {
Show-Overview
Show-OverviewHints
}
function Show-Query {
# Find dataset
$dataSets = $root.SelectNodes("s:dataSet", $ns)
$targetDs = $null
@@ -666,10 +672,13 @@ elseif ($Mode -eq "query") {
}
# ============================================================
# MODE: fields
# MODE: query
# ============================================================
elseif ($Mode -eq "fields") {
if ($Mode -eq "query") {
Show-Query
}
function Show-Fields {
$dataSets = $root.SelectNodes("s:dataSet", $ns)
function Show-DataSetFields($dsNode) {
@@ -881,6 +890,13 @@ elseif ($Mode -eq "fields") {
}
}
# ============================================================
# MODE: fields
# ============================================================
if ($Mode -eq "fields") {
Show-Fields
}
# ============================================================
# MODE: links
# ============================================================
@@ -980,11 +996,7 @@ elseif ($Mode -eq "calculated") {
}
}
# ============================================================
# MODE: resources
# ============================================================
elseif ($Mode -eq "resources") {
function Show-Resources {
$totalFields = $root.SelectNodes("s:totalField", $ns)
if ($totalFields.Count -eq 0) {
$lines.Add("(no resources)")
@@ -1031,10 +1043,13 @@ elseif ($Mode -eq "resources") {
}
# ============================================================
# MODE: params
# MODE: resources
# ============================================================
elseif ($Mode -eq "params") {
if ($Mode -eq "resources") {
Show-Resources
}
function Show-Params {
$params = $root.SelectNodes("s:parameter", $ns)
$lines.Add("=== Parameters ($($params.Count)) ===")
$lines.Add(" Name Type Default Visible Expression")
@@ -1096,10 +1111,13 @@ elseif ($Mode -eq "params") {
}
# ============================================================
# MODE: variant
# MODE: params
# ============================================================
elseif ($Mode -eq "variant") {
if ($Mode -eq "params") {
Show-Params
}
function Show-Variant {
$variants = $root.SelectNodes("s:settingsVariant", $ns)
if (-not $Name) {
@@ -1274,6 +1292,30 @@ elseif ($Mode -eq "variant") {
} # end else (variant detail)
}
# ============================================================
# MODE: variant
# ============================================================
if ($Mode -eq "variant") {
Show-Variant
}
# ============================================================
# MODE: full
# ============================================================
elseif ($Mode -eq "full") {
Show-Overview
$lines.Add(""); $lines.Add("--- query ---"); $lines.Add("")
Show-Query
$lines.Add(""); $lines.Add("--- fields ---"); $lines.Add("")
Show-Fields
$lines.Add(""); $lines.Add("--- resources ---"); $lines.Add("")
Show-Resources
$lines.Add(""); $lines.Add("--- params ---"); $lines.Add("")
Show-Params
$lines.Add(""); $lines.Add("--- variant ---"); $lines.Add("")
Show-Variant
}
# ============================================================
# MODE: trace
# ============================================================