| name | rime-workflow |
| description | Start here for Rime configuration, schema, dictionary, deployment, debugging, or sync tasks. Provides the core engine flow, directory model, patching rules, redeploy checklist, and routing to specialized Rime skills. Load references/operations.md only for log locations, troubleshooting commands, or sync setup details. |
| metadata | {"author":"RimeInn","version":"0.3.0"} |
Rime Workflow
How To Use This Skill
Use this as the first Rime skill. It should answer “where in Rime does this problem live?” and then route to a narrower skill.
| Task | Next Skill |
|---|
| Create or restructure an input schema | rime-schema |
| Inspect processors, segmentors, translators, filters, tags, or component order | rime-gears |
Edit speller/algebra, preedit_format, or comment_format | rime-spelling-algebra |
Write or debug lua_processor, lua_segmentor, lua_translator, or lua_filter | rime-lua |
| Install, update, or package schemes with plum | rime-plum |
| Configure Windows Weasel UI, app options, fonts, or colors | rime-weasel |
For logs, platform paths, common troubleshooting checks, or sync setup, load operations.
First Checks
Before proposing a fix, identify:
- the OS and Rime frontend, such as Weasel, Squirrel, iBus Rime, fcitx5-rime, other unofficial frontends;
- whether the relevant file is in the user data directory, shared data directory, or deployed
build/ output;
- whether the change belongs in
<name>.custom.yaml instead of an upstream/default file;
- whether the user redeployed after changing YAML, dictionaries, Lua files, or OpenCC data;
- whether logs contain relevant
ERROR or WARNING lines.
Engine Flow
Rime handles input in this order:
processors receive each key event in order and return accepted, rejected, or noop.
- If a processor changes
context.input, Rime rebuilds the composition.
segmentors split context.input into segments and attach tags.
translators query tagged segments and lazily produce candidates.
- Candidates from translations are merged by quality.
filters transform, annotate, remove, reorder, or deduplicate candidates.
If the problem is at a specific component, route to rime-gears.
Data Directories
Every Rime installation has:
| Directory | Role |
|---|
| Shared data directory | read-only defaults: bundled schemas, dictionaries, OpenCC data, frontend defaults |
| User data directory | user schemas, default.yaml, *.custom.yaml, dictionaries, Lua scripts, user data |
User build/ directory | deployed output after __patch / __include expansion and dictionary compilation |
Debug deployed behavior against files under build/, not only source YAML.
Schema Basics
A custom schema normally needs:
<schema_id>.schema.yaml
<dict_name>.dict.yaml, unless it uses only echo_translator or other non-dictionary translators
- an entry in
default.yaml:
schema_list:
- {schema: luna_pinyin}
- {schema: my_schema}
For schema structure, translator choices, dictionary format, and complete examples, use rime-schema.
Patching Rules
Prefer user patches over editing shared/default files directly.
Rime YAML supports __include and __patch. A schema without an explicit __patch implicitly includes:
__patch:
__include: <schema_id>.custom:/patch?
So user overrides usually go in <schema_id>.custom.yaml:
patch:
translator/enable_user_dict: false
menu/page_size: 9
Patch path reminders:
key/path: value overwrites a node.
key/path/+: value appends to a list or merges into a map.
- Source and target types must match: list with list, map with map, scalar with scalar.
Redeploy Checklist
After changes, redeploy and check:
- YAML parses without indentation or quoting errors.
- schema appears in the enabled scheme list.
translator/dictionary matches the dictionary name.
- dictionary compilation produced expected
*.table.bin / *.prism.bin.
- custom patches appear in
build/<schema_id>.schema.yaml.
- relevant logs contain no new
ERROR or WARNING lines.