mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-10 21:43:21 +03:00
fix(skills): add file-not-found fallback for Dir/Name/Name.xml paths
When a non-existent path like Dir/Name/Name.xml is passed (common when models construct paths from directory structure), auto-resolve tries Dir/Name.xml as sibling. Applied to all 7 scripts with path resolution. Also update meta-info SKILL.md to encourage skill usage over direct XML reads. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
78e252af1e
commit
bc9087957f
@@ -38,6 +38,16 @@ if (Test-Path $ObjectPath -PathType Container) {
|
||||
}
|
||||
}
|
||||
|
||||
# File not found — check Dir/Name/Name.xml → Dir/Name.xml
|
||||
if (-not (Test-Path $ObjectPath)) {
|
||||
$fileName = [System.IO.Path]::GetFileNameWithoutExtension($ObjectPath)
|
||||
$parentDir = Split-Path $ObjectPath
|
||||
$parentDirName = Split-Path $parentDir -Leaf
|
||||
if ($fileName -eq $parentDirName) {
|
||||
$candidate = Join-Path (Split-Path $parentDir) "$fileName.xml"
|
||||
if (Test-Path $candidate) { $ObjectPath = $candidate }
|
||||
}
|
||||
}
|
||||
if (-not (Test-Path $ObjectPath)) {
|
||||
Write-Host "[ERROR] File not found: $ObjectPath"
|
||||
exit 1
|
||||
|
||||
@@ -68,6 +68,16 @@ if (Test-Path $ObjectPath -PathType Container) {
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
# File not found — check Dir/Name/Name.xml → Dir/Name.xml
|
||||
if (-not (Test-Path $ObjectPath)) {
|
||||
$fileName = [System.IO.Path]::GetFileNameWithoutExtension($ObjectPath)
|
||||
$parentDir = Split-Path $ObjectPath
|
||||
$parentDirName = Split-Path $parentDir -Leaf
|
||||
if ($fileName -eq $parentDirName) {
|
||||
$candidate = Join-Path (Split-Path $parentDir) "$fileName.xml"
|
||||
if (Test-Path $candidate) { $ObjectPath = $candidate }
|
||||
}
|
||||
}
|
||||
if (-not (Test-Path $ObjectPath)) {
|
||||
Write-Error "Object file not found: $ObjectPath"
|
||||
exit 1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: meta-info
|
||||
description: Анализ структуры объекта метаданных 1С из XML-выгрузки — реквизиты, табличные части, формы, движения, типы. Используй для изучения структуры объектов и как подготовительный шаг при написании запросов и кода, работающего с объектами
|
||||
description: Анализ структуры объекта метаданных 1С из XML-выгрузки — реквизиты, табличные части, формы, движения, типы. Используй для изучения структуры объектов (вместо чтения XML-файлов напрямую) и как подготовительный шаг при написании запросов и кода, работающего с объектами
|
||||
argument-hint: <ObjectPath> [-Mode overview|brief|full] [-Name <элемент>]
|
||||
allowed-tools:
|
||||
- Bash
|
||||
|
||||
@@ -42,6 +42,16 @@ if (Test-Path $ObjectPath -PathType Container) {
|
||||
}
|
||||
}
|
||||
|
||||
# File not found — check Dir/Name/Name.xml → Dir/Name.xml (common LLM mistake)
|
||||
if (-not (Test-Path $ObjectPath)) {
|
||||
$fileName = [System.IO.Path]::GetFileNameWithoutExtension($ObjectPath)
|
||||
$parentDir = Split-Path $ObjectPath
|
||||
$parentDirName = Split-Path $parentDir -Leaf
|
||||
if ($fileName -eq $parentDirName) {
|
||||
$candidate = Join-Path (Split-Path $parentDir) "$fileName.xml"
|
||||
if (Test-Path $candidate) { $ObjectPath = $candidate }
|
||||
}
|
||||
}
|
||||
if (-not (Test-Path $ObjectPath)) {
|
||||
Write-Host "[ERROR] File not found: $ObjectPath"
|
||||
exit 1
|
||||
|
||||
@@ -37,6 +37,16 @@ if (Test-Path $ObjectPath -PathType Container) {
|
||||
}
|
||||
}
|
||||
|
||||
# File not found — check Dir/Name/Name.xml → Dir/Name.xml
|
||||
if (-not (Test-Path $ObjectPath)) {
|
||||
$fileName = [System.IO.Path]::GetFileNameWithoutExtension($ObjectPath)
|
||||
$parentDir = Split-Path $ObjectPath
|
||||
$parentDirName = Split-Path $parentDir -Leaf
|
||||
if ($fileName -eq $parentDirName) {
|
||||
$candidate = Join-Path (Split-Path $parentDir) "$fileName.xml"
|
||||
if (Test-Path $candidate) { $ObjectPath = $candidate }
|
||||
}
|
||||
}
|
||||
if (-not (Test-Path $ObjectPath)) {
|
||||
Write-Host "[ERROR] File not found: $ObjectPath"
|
||||
exit 1
|
||||
|
||||
@@ -28,6 +28,15 @@ if (Test-Path $SubsystemPath -PathType Container) {
|
||||
elseif (Test-Path $sibling) { $SubsystemPath = $sibling }
|
||||
else { Write-Error "No $dirName.xml found in directory or as sibling"; exit 1 }
|
||||
}
|
||||
# File not found — check Dir/Name/Name.xml → Dir/Name.xml
|
||||
if (-not (Test-Path $SubsystemPath)) {
|
||||
$fn = [System.IO.Path]::GetFileNameWithoutExtension($SubsystemPath)
|
||||
$pd = Split-Path $SubsystemPath
|
||||
if ($fn -eq (Split-Path $pd -Leaf)) {
|
||||
$c = Join-Path (Split-Path $pd) "$fn.xml"
|
||||
if (Test-Path $c) { $SubsystemPath = $c }
|
||||
}
|
||||
}
|
||||
if (-not (Test-Path $SubsystemPath)) { Write-Error "File not found: $SubsystemPath"; exit 1 }
|
||||
$resolvedPath = (Resolve-Path $SubsystemPath).Path
|
||||
|
||||
|
||||
@@ -383,6 +383,15 @@ if ($Mode -eq "tree") {
|
||||
Write-Host "[ERROR] ci mode requires a subsystem .xml file, not a directory"
|
||||
exit 1
|
||||
}
|
||||
# File not found — check Dir/Name/Name.xml → Dir/Name.xml
|
||||
if (-not (Test-Path $SubsystemPath)) {
|
||||
$fn = [System.IO.Path]::GetFileNameWithoutExtension($SubsystemPath)
|
||||
$pd = Split-Path $SubsystemPath
|
||||
if ($fn -eq (Split-Path $pd -Leaf)) {
|
||||
$c = Join-Path (Split-Path $pd) "$fn.xml"
|
||||
if (Test-Path $c) { $SubsystemPath = $c }
|
||||
}
|
||||
}
|
||||
if (-not (Test-Path $SubsystemPath)) {
|
||||
Write-Host "[ERROR] File not found: $SubsystemPath"
|
||||
exit 1
|
||||
@@ -413,6 +422,15 @@ if ($Mode -eq "tree") {
|
||||
}
|
||||
}
|
||||
|
||||
# File not found — check Dir/Name/Name.xml → Dir/Name.xml
|
||||
if (-not (Test-Path $SubsystemPath)) {
|
||||
$fn = [System.IO.Path]::GetFileNameWithoutExtension($SubsystemPath)
|
||||
$pd = Split-Path $SubsystemPath
|
||||
if ($fn -eq (Split-Path $pd -Leaf)) {
|
||||
$c = Join-Path (Split-Path $pd) "$fn.xml"
|
||||
if (Test-Path $c) { $SubsystemPath = $c }
|
||||
}
|
||||
}
|
||||
if (-not (Test-Path $SubsystemPath)) {
|
||||
Write-Host "[ERROR] File not found: $SubsystemPath"
|
||||
exit 1
|
||||
|
||||
@@ -24,6 +24,15 @@ if (Test-Path $SubsystemPath -PathType Container) {
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
# File not found — check Dir/Name/Name.xml → Dir/Name.xml
|
||||
if (-not (Test-Path $SubsystemPath)) {
|
||||
$fn = [System.IO.Path]::GetFileNameWithoutExtension($SubsystemPath)
|
||||
$pd = Split-Path $SubsystemPath
|
||||
if ($fn -eq (Split-Path $pd -Leaf)) {
|
||||
$c = Join-Path (Split-Path $pd) "$fn.xml"
|
||||
if (Test-Path $c) { $SubsystemPath = $c }
|
||||
}
|
||||
}
|
||||
if (-not (Test-Path $SubsystemPath)) {
|
||||
Write-Host "[ERROR] File not found: $SubsystemPath"
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user