<< All versions
Skill v1.0.1
currentAutomated scan100/100ingvarconsulting/unica/code-diagnostics
+1 new
──Details
PublishedAugust 11, 2026 at 07:23 AM
Content Hashsha256:2386073630757449...
Git SHA9d2cfeb3a576
Bump Typepatch
──Files
Files (1 file, 6.8 KB)
SKILL.md6.8 KBactive
SKILL.md · 116 lines · 6.8 KB
version: "1.0.1" name: code-diagnostics description: "Диагностика BSL и объяснение отключений диагностик в коде. Используй когда нужно запустить или разобрать диагностики, объяснить коды АПК, EDT, BSL LS, inline/range disable markers, suppression-комментарии или стандарт v8std за диагностикой."
Code Diagnostics
MCP routing
- Preferred path: use MCP
unicatoolsunica.code.diagnostics,unica.code.graph,unica.code.definition,unica.code.outline,unica.code.search,unica.standards.explain,unica.standards.search, andunica.runtime.execute. - Use
unica.code.diagnosticswithmode=analyzeor nomodefor the classic analyzer run; large workspaces may settimeoutSecondsfrom 30 to 3600. Without that argument the call usesoperational.code_diagnostics.analyze_timeout_secondsfrom<workspaceRoot>/unica.local.toml, thenunica.toml, then the compiled 120-second fallback. Usemode=status|catalog|file|workspacefor typed diagnostic catalog and scoped diagnostic reads; those modes do not read this operational config and do not accepttimeoutSeconds. mode=analyzealways returns typeddataassembled from the analyzer JSONL protocol; raw JSONL and console reports never appear instdout. Omitformat, or use the migration aliasesformat=json|jsonl;console, unknown formats andformaton another mode are rejected before the analyzer starts.- Analyze filters default to
minSeverity=warning,detail=conciseandlimit=200(1..=200).codesmatches exact case-sensitive codes. Readfiles,diagnostics,itemsTotal,itemsReturnedandtruncatedbefore treatingitemsas exhaustive; file failures remain visible regardless of diagnostic filters. pathbelongs tomode=fileonly. Every other mode rejects it instead of scanning the whole source set, so name the file and the mode together.- When the analyzer workspace model is still loading,
mode=file|workspacefail withdiagnostics_pending:and a retry hint rather than reporting an empty finding set. Formode=analyze, a stream containing onlystartisdiagnostics_pending:, file events withoutdonearediagnostics_incomplete:, and malformed events or inconsistent totals arediagnostics_invalid:. Onlystate=completed,complete=trueandok=trueprove a finished analysis; treat every other state as not clean code.mode=statusreports loading as a successful readiness answer. unica.code.definitionreturnsindex_pending:only while an RLM index is building andindex_unavailable:for missing, stale, failed or unavailable indexes. Neither state means “no definitions”; only a ready typed result withdefinitions=[]is a successful empty answer.- Read-only tools do not accept
dryRun; preview and apply modes belong only to mutating tools. - Use
unica.code.graphonly for diagnostic impact context: containing node, callers, callees, neighbors, or workspace graph status. - v8std access goes only through public
unica.standards.*tools. - Do not call internal analyzer, standards, or package adapters directly. They are hidden behind MCP
unica.
Workflow
- Run
unica.code.diagnosticsfor the selected source-set or module. Start withmode=statuswhen the analyzer workspace model may still be loading, and usemode=catalogwhen diagnostic codes need classification. - Group diagnostics by file, diagnostic id/code, and root cause. Do not fix duplicate reports independently when one source issue explains them.
- For one file or range, use
unica.code.diagnosticswithmode=file; then useunica.code.outline,unica.code.definition, orunica.code.searchfor exact context. - When diagnostic output includes a graph id or the fix may affect callers/callees, inspect impact with
unica.code.graphbefore proposing a change. - Search nearby code with
unica.code.searchonly when exact context tools do not identify the root cause. - For each diagnostic id/code, call
unica.standards.explainwithcodeswhen the code is explicit; otherwise searchunica.standards.searchby diagnostic name, APK/EDT/BSL LS token, or nearby snippet. - Report fixes in cause-first order: source defect, impacted diagnostics, graph impact if relevant, standard reference, verification command.
Verification gate
- The verification gate is part of the delivery contract, not an optional final
polish step.
- Run diagnostics after syntax-sensitive edits and treat new
errororcritical
findings as blocking.
- Run impact analysis with
unica.code.graphwhen an exported method, metadata
handler, public API, query path, or shared module contract changes.
- If public MCP
unicacannot expose the required syntax, diagnostic, or impact
evidence, report that as a Unica MCP contract gap instead of claiming the change is fully verified.
Suppression and range-disable comments
When comments disable diagnostics over a line or range, treat the exact marker as evidence, not as decoration.
- Extract literal codes or ids from the comment: АПК, EDT, BSL LS, analyzer rule names, numeric or mnemonic ids.
- Use
unica.standards.explainwith all extracted codes. If v8std does not resolve a code, search withunica.standards.searchusing the code plus nearby diagnostic text. - Explain why the отключение exists only when the code, surrounding range, and standard support the reason. If the reason is absent, say that the suppression is not justified in the source.
- Prefer narrowing the disabled range or fixing the code. Keep suppression only when
development-standardevidence, a verifiedplatform-helpsource, or a runtime reproduction proves the diagnostic intentionally false-positive. Do not infer a platform limitation fromunica.standards.*.
MCP examples
jsonc
{"jsonrpc": "2.0","method": "tools/call","params": {"name": "unica.code.diagnostics","arguments": {"cwd": "<workspace>","sourceDir": "src","mode": "file","path": "CommonModules/Продажи/Ext/Module.bsl","limit": 100}}}
jsonc
{"jsonrpc": "2.0","method": "tools/call","params": {"name": "unica.code.diagnostics","arguments": {"cwd": "<workspace>","mode": "catalog","codes": ["UnusedLocalVariable", "DataExchangeLoading"]}}}
jsonc
{"jsonrpc": "2.0","method": "tools/call","params": {"name": "unica.standards.explain","arguments": {"codes": ["АПК:142", "LineLength"]}}}
json
{"jsonrpc": "2.0","method": "tools/call","params": {"name": "unica.runtime.execute","arguments": {"cwd": "<workspace>","operation": "syntax","mode": "designer-modules","dryRun": false}}}