- cfe-borrow: keep AutoCommandBar ChildItems (buttons) with CommandName=0
instead of stripping them — Configurator expects buttons to be present
- form-edit: insert Events section after AutoCommandBar, not before —
matches Configurator's element ordering
- cfe-patch-method(py): fix \r\r\n double line endings by using
newline="" in open() calls
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configurator stores DataPath inside <BaseForm> as original form snapshot —
this is normal behavior, not an error. Removes false WARN on
Configurator-exported extensions like JR2433.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add sub-item validation (Attribute, TabularSection, EnumValue, Form),
borrowed form structure checks, form dependency analysis (CommonPicture,
StyleItem with platform whitelist, Enum DesignTimeRef), and TypeLink
validation. Fix DataPath false positive by scoping check to BaseForm
content only. Both PS1 and Python ports updated to v1.2.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
read_source_object returns keys with capital letters (Uuid, Properties),
but auto-borrow sections for CommonPicture, StyleItem, and Enum used
lowercase. E2E tested: Python port loads into BP_DEMO successfully.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Borrow-Form now generates full ChildItems tree (matching Configurator output)
with stripping of DataPath, TitleDataPath, TypeLink, Events, CommandName→0.
Auto-borrows CommonPictures, StyleItems, and Enums+EnumValues referenced by
form elements. Verified loading into BP database with two production forms.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configurator generates borrowed forms with only properties + AutoCommandBar +
empty Attributes — no ChildItems. ChildItems appear only when modifications are
added via form-edit. Copying full ChildItems caused XDTO errors on complex forms
due to unresolvable references (CommonPicture, StyleItem, xr: namespace elements).
Changes:
- Remove ChildItems extraction and output from Borrow-Form
- Strip ChildItems from AutoCommandBar (keep only Autofill property)
- Both main and BaseForm sections now contain only properties + minimal AutoCommandBar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Borrowed forms failed to load with "Неверный путь к данным" and "Событие не было загружено"
errors. Root cause: base form elements contained DataPath and Events referencing attributes
and handlers not present in the extension.
Changes:
- Strip <DataPath> from base elements in both AutoCommandBar and ChildItems
- Strip element-level <Events> from both sections
- Collect form-level properties (AutoTitle, WindowOpeningMode, etc.) and write them
into both main and BaseForm sections
- Update 1c-extension-spec.md with rules 5-7
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Value starting with `[` was interpreted as YAML flow sequence,
breaking frontmatter parsing and the input hint in UI.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cyrillic stdout works fine — the hint caused weak models to waste
an extra turn writing to file and reading it back.
Verified: all 9 validate skills pass on Haiku in 4 turns each.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The section duplicated ## Команда examples in slash-command format that
the model never needs — it receives arguments directly. Second example
paths moved into ## Команда as additional command lines.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace abstract <...> placeholders with concrete paths in ## Команда
- Replace abstract examples with concrete paths in ## Использование
- Remove авторезолв notes from meta/epf/cf/cfe-validate
- Clean up erf-validate: remove Вывод/Верификация/Когда использовать,
add -Detailed parameter, unify format with other validators
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Scripts now accept directory paths (e.g. Forms/ИмяФормы) and auto-resolve
to the target XML file. Silent fallbacks handle missing Ext/ level and
descriptor-to-file resolution. SKILL.md: concrete placeholders, unified
quotes, auto-resolve notes, role-validate MaxErrors in params.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All 10 validation skills (meta, epf, skd, cf, cfe, form, mxl, role,
subsystem, interface) now output a single summary line on success:
=== Validation OK: Type.Name (N checks) ===
Errors/warnings always shown. Full per-check [OK] output behind -Detailed flag.
Removed all N/A check lines. Unified role-validate output format.
Trimmed SKILL.md files from 42-119 to 51-67 lines.
Version bumps: meta-validate v1.2, all others v1.1.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add claude-code --project-dir example for embedded clone workflow
- Remove misleading src/ directory from quick start tree
- Add note about git pull + re-run for updates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- switch.py v1.2: `claude-code --project-dir` now copies skills (was error before)
- Skip runtime conversion for single-runtime skills (e.g. img-grid stays python)
- Distinguish info ("Python-версия не предусмотрена") from real missing-file warnings
- Print .gitignore recommendations for target project on install
- Copy root-level .gitignore from skills dir during install
- Interactive mode asks project path for all platforms, not just claude-code
- Add .gitignore in skills root (__pycache__/) and web-test/ (node_modules, *.png, *.mp4)
- Sync root .gitignore with all 13 platforms from PLATFORMS registry
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
meta-compile: bare Number→Number(10,0), ValueStorage→xs:base64Binary,
lowercase ref synonyms (catalogref, documentref, enumref).
meta-edit: bare String default 0→10, reserved attribute name warnings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move type enumeration from description to trigger clause for better
skill discovery matching. Remove implementation details from description.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add explicit 4-step workflow (write JSON → run script → /meta-edit →
/meta-validate) to guide the model through the optimal path instead of
free exploration. Remove standalone "Верификация" section as it
duplicates workflow step 4.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace imperative "read reference before compiling" with conditional
"if you need properties not shown in examples"
- Add explicit instruction not to search for XML in config dumps
- Rename "справочник" → "reference-файл" to avoid confusion with
Catalog metadata type
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bare `String` type (without length qualifier) now defaults to String(10)
instead of String(0) — matching 1C Designer behavior. String(0) means
unlimited length (NTEXT in SQL), which is rarely intended.
Also fixes SKILL.md: removes misleading `"synonym": "авто"` from JSON
example, clarifies synonym auto-generation from CamelCase name.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace 12 type-specific examples with 5 DSL pattern examples
(minimal, attributes, tabularSections, register, batch).
Strengthen reference file instruction to "прочитай перед компиляцией".
203 → 121 lines. Tested on Opus and Sonnet — both pass e2e.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace monolithic docs/meta-dsl-spec.md link with 4 domain-specific
reference files inside the skill directory. Agent reads only the
relevant file when compiling a specific type, reducing context usage.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AddressingAttribute was taking the entire shorthand string (e.g.
"Name: String(100)") as the attribute name instead of parsing it
through Parse-AttributeShorthand. This caused String type without
length qualifiers (NTEXT in SQL), making Index creation impossible.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Support passing a JSON array of object definitions in a single file.
Each element is compiled independently via subprocess isolation
(Start-Process in PS1, subprocess.call in PY).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Accept multiple object paths via pipe separator (|) in -ObjectPath.
Each object is validated separately with individual results, followed
by a summary line: "Batch: N objects, X passed, Y failed".
Single-path mode unchanged. Version bumped to v1.1.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Unify inline type string building logic (type + length/precision → "String(100)",
"Number(10,2)") into a shared Build-TypeStr/build_type_str function. Used by both
Parse-AttributeShorthand and Emit-ConstantProperties. Fix: check valueType before
type to avoid treating metadata type name (e.g. "Constant") as data type.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Check 13: validates EventSubscription.Handler and ScheduledJob.MethodName
reference format (CommonModuleName.ProcedureName), verifies CommonModule
exists and optionally checks BSL for exported procedure.
Check 14: validates DocumentJournal Column References are non-empty
(empty References causes LoadConfigFromFiles to fail).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Detect configDir by walking up from object path to find
Configuration.xml. For AccumulationRegister, AccountingRegister,
CalculationRegister, and InformationRegister (RecorderSubordinate) scan
Documents/*.xml to verify at least one document references the register
in RegisterRecords. Warn if no registrar found.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Check 12: detect properties that are invalid for a given metadata type
and would cause LoadConfigFromFiles to fail:
- ChartOfCharacteristicTypes: CodeType
- ChartOfAccounts: Autonumbering, Hierarchical
- ChartOfCalculationTypes: CheckUnique, Autonumbering
- ExchangePlan: CodeType, CheckUnique, Autonumbering
Check 10 extensions:
- DocumentJournal: warn on empty RegisteredDocuments
- Add DependenceOnCalculationTypes to enum validation (Check 4)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Group 1: ExchangePlan — remove invalid CodeType/CheckUnique/Autonumbering;
Flowchart.xml — add version="2.17"; Content.xml — fix namespace + version.
Group 2: Add missing GeneratedType categories — DefinedType, ChartOfAccounts
ExtDimensionTypes/Row, CalculationRegister RecalculationsManager/Recalcs.
Group 3: BusinessProcess — emit <Task> property from DSL.
Group 4: Cross-reference [HINT] output after compilation for AccountingRegister,
CalculationRegister, BusinessProcess, ChartOfAccounts (oriented to /meta-edit DSL).
Group 5: Reserved attribute name warnings in meta-compile and meta-validate
(Check 7b); cross-reference validation in Check 10 with [HINT] output.
All changes synced to both PS1 and PY versions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Explain why stub database may lose DataPath bindings when forms
contain register record sets — source XML lacks dimension/resource/
attribute classification for register fields.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The intro paragraph on line 14 duplicated the frontmatter description
field. Per Anthropic best practices, the body should contain only
implementation details — the heading and frontmatter are sufficient.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Drop "см. /erf-*" from epf-build/epf-dump and "Использует общий скрипт
из /epf-*" from erf-build/erf-dump to prevent the model from reading
duplicate skill files and wasting context.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- build-spec: replace outdated notes about empty base with auto-stub info
- build-spec: add dump notes about irreversible type loss in empty base
- epf-guide: add build/dump section explaining auto-stub and base requirement
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add "Используй когда..." triggers to epf-build, epf-dump, erf-build, erf-dump
- Remove "Коды возврата" sections (trivial info Claude already knows)
- Remove Hierarchical tree diagrams from dump skills (Claude sees output directly)
- Fix Windows backslashes to forward slashes in examples
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Parse form attributes of RegisterRecordSet types and extract column
names from DataPath references. Generate matching Dimension/Attribute
stubs in register metadata so form field bindings survive the build.
Limitation: column categories (Dimension vs Resource vs Attribute)
cannot be determined from EPF sources alone — only names are preserved.
Also add /Out log for UpdateDBCfg errors in both PS1 and PY.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dump in an empty database irreversibly loses reference types (CatalogRef,
DocumentRef, etc.) — they get converted to xs:string. Instead of silently
creating an empty temp database, the script now exits with an error
explaining that a real database is required.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add stub-db-create script (.ps1/.py) that scans EPF XML sources for
reference types (CatalogRef, DocumentRef, EnumRef, etc.) and generates
a minimal 1C configuration with metadata stubs. Supports 14 metadata
types including registers, charts, defined types.
epf-build/erf-build: if no database specified, auto-create stub DB
with matching metadata, build EPF, then cleanup temp DB.
epf-dump/erf-dump: if no database specified, create empty DB with
warning that reference types will be converted to strings.
SKILL.md updated: prefer real database from .v8-project.json first,
fall back to auto-created stub only when unavailable.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Resolve-TypeStr/resolve_type_str to form-compile and form-edit (PS+PY)
that silently normalizes Russian type names (Строка→string, Число→decimal,
Булево→boolean, etc.), Number→decimal alias, and Russian reference prefixes
(СправочникСсылка→CatalogRef, etc.). Also accept + as composite type
separator alongside |. This makes form skills more forgiving when the model
uses meta-compile DSL conventions instead of form-specific ones.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>