con un clic
rlm-bsl-search
Rules for using RLM tools for project search and navigation in 1C/BSL
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Rules for using RLM tools for project search and navigation in 1C/BSL
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
When writing or reviewing BSL, apply 1C standards
При написании или ревью BSL применять стандарты 1С
Orchestrator: routing work and agent phases
Оркестратор: маршрутизация работы и фаз агентов
BSL LSP navigation: definitions, refs, call graph
Find an existing equivalent before new BSL code
| name | rlm-bsl-search |
| description | Rules for using RLM tools for project search and navigation in 1C/BSL |
Use this skill when working with 1C/BSL and the answer requires project reconnaissance over configuration source files, even if the user did not explicitly ask for "search".
| Situation | First tool |
|---|---|
| Find the implementation of a procedure, function, handler, subscription, scheduled job | rlm_start |
| Understand where a metadata object, attribute, tabular section, form, role, query is used | rlm_start |
| Find a similar implementation before changing BSL code | rlm_start |
| Understand a business mechanism or call chain in the project | rlm_start |
| Investigate XML/MDO/forms/rights/query and their relationships with BSL code | rlm_start |
| Assess the blast radius of a change in a 1C configuration | rlm_start, then targeted verification via BSL LS |
The main rule: for broad 1C/BSL search, use RLM before Grep, Glob, broad Read, Bash rg, grep, find, and manual recursive file reading.
| If you need to... | Use |
|---|---|
| Find where a mechanism, similar implementation, or business chain lives in the project | RLM first |
| Find all project relationships of an object: BSL, queries, XML/MDO, forms, rights, subscriptions, scheduled jobs | RLM first |
| Understand blast radius before choosing a concrete file/symbol | RLM first |
| Go to definition/references of an already known symbol at a concrete location | BSL LS first |
| Get hover, signature, completion, diagnostics, code actions, rename | BSL LS first |
| Check a changed BSL file after editing | BSL LS diagnostics, then final verification through v8-runner |
| Quickly read one known file/fragment | Read / LSP file tool |
Working model: RLM answers “where and what should I search across the project?”, while BSL LS answers “what exactly does this symbol/type/position mean?”. If the task starts from an unclear business need or broad search over 1C sources, start with RLM. If the task is already positional, start with BSL LS.
| Situation | Tool |
|---|---|
| Need diagnostics, hover, signature, completion | BSL LS/LSP tools |
| Need definition/references/rename/formatting/code actions at an already known position | BSL LS/LSP tools |
| Need to read one already known file or a small fragment | Read or an LSP file tool |
| The search does not relate to 1C/BSL source files | standard search tools |
| RLM is unavailable, the index is broken, or it clearly does not fit | fallback to Grep/rg, recording the reason |
| Tool | When to use | Pitfalls |
|---|---|---|
rlm_start | Open a project reconnaissance session over 1C/BSL source files | path must point to the 1C source root, not an arbitrary repository root |
rlm_execute | Run a batch of search/navigation operations through RLM helpers | Print a compact result, not large file bodies |
rlm_help | Choose a helper/recipe before non-trivial reconnaissance | Call before rlm_execute if the rlm_start strategy is insufficient |
rlm_end | Close the RLM session | Close it after reconnaissance is complete |
rlm_index | Check index state (info) or administer the index | Build/update is usually done by the container, not the agent |
rlm_projects | Work with the RLM project registry | Not needed for a normal session if path is known |
rlm_start.query, pass a short working goal for the reconnaissance. This is not a prompt for the internal LLM: query helps RLM choose effort, strategy, and business recipe.path, pass the source directory of the 1C configuration, usually <project-root>/src, or the exact configuration root where Configuration.xml is located. Do not pass the root git repository if it is not the root of the 1C sources.rlm_start response: session_id, warnings, index status, extension context, strategy, available functions.rlm_help before rlm_execute.rlm_execute: write compact Python, use RLM helpers, and print only useful output.rlm_end when the reconnaissance is finished.path should point to the directory where RLM can find the 1C source tree:
<project-root>/src
<project-root>/src/xml
<project-root>/src/cf
The exact configuration directory containing Configuration.xml is also acceptable.
The MCP proxy can normalize relative, host, and container paths, but this is only a technical path transformation. The semantics do not change: the path must lead to 1C sources, not to an arbitrary project directory.
rlm_start.query by itself does not call an LLM. It sets the session goal and affects:
rlm_execute.Optional llm_query and llm_query_batched are available only inside rlm_execute, if the RLM server is configured with an LLM provider. Without an LLM, RLM remains a deterministic index/search/navigation tool.
Prefer one substantial rlm_execute instead of many small Grep/Read calls.
For complex reconnaissance, split the work into phases:
rlm_execute is discovery only: find and deduplicate candidates (objects, methods,
registers, forms), output a compact name/category/path/count table and the next step.rlm_execute profiles 3-5 selected production candidates (get_object_profile,
get_object_full_structure, extract_queries), without callers for all found methods.rlm_execute is a targeted trace/callers/usages only for methods selected after profiling.Do not mix discovery + object profiles + callers/call hierarchy in the first batch. That output quickly
becomes noisy, hits max_output_chars limits, and loses the tail of the result.
Keep the output compact:
Do not print large file bodies unless necessary. First find candidates and only then read exact fragments.
Deduplicate variants of case and language in search terms (PnL/PNL/Pnl, OKX/okx,
Russian case forms), and also exclude test extensions/modules from production output if the task is not about
tests. If test findings are needed as evidence, print them in a separate section with a limit.
Usually the agent does not build the index manually. The container starts RLM build/update automatically:
Use rlm_index mainly for info diagnostics. Apply manual build, update, drop only when you explicitly need to administer the index or fix its state.
rlm_start(query="find an existing implementation of <mechanism>", path="<project-root>/src")rlm_help(category="discovery").rlm_execute: first search(...) / search_methods(...), then targeted read_file(...) or a helper for usages/callers.rlm_end.rlm_start(query="assess usage of metadata object <Object>", path="<project-root>/src")rlm_execute: find code usages, forms, queries, permissions, subscriptions, scheduled jobs.rlm_end.rlm_index(action="info", path="<project-root>/src").build/update/drop only if it is explicitly needed to restore the index.Correct:
Need to understand where the discount is calculated.
1. rlm_start(query="find discount calculation and related calls", path="<project-root>/src")
2. rlm_execute: search("discount"), search_methods("Discount"), get_callers(...)
3. Read/BSL LS only for the found specific files/positions.
Why: RLM uses an index and helpers, and does not pull thousands of files into context.
Incorrect:
Grep("Discount", glob="**/*")
Read dozens of found files
Bash rg across all src
Why: broad raw search across a large 1C configuration is slower, noisier, and loses metadata, forms, permissions, queries, and call graph links.
RLM first:
BSL LS first:
Raw search fallback: