winbox-native-dev

Develops and extends the tik4net WinBoxNative structured M2 transport for MikroTik RouterOS.

198|97|Updated Aug 16, 2015
One-click install
npx skills add https://github.com/danikf/tik4net --skill winbox-native-dev-danikf
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: winbox-native-dev
Source: https://github.com/danikf/tik4net/tree/main/.claude/skills/winbox-native-dev
Command: npx skills add https://github.com/danikf/tik4net --skill winbox-native-dev-danikf

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Native WinBox (M2) reads and writes against MikroTik RouterOS can return wrong or empty data, silently drop fields, or fail with cryptic 0xFE00xx errors because handler numbers, field keys, and wire encodings are version-volatile and undocumented. This Skill guides the diagnosis and implementation of fixes in the tik4net C# resolver/codec layer by triangulating three sources of truth instead of guessing wire formats. ## Core Features & Use Cases - Path and handler mapping: Add a new RouterOS path to the native transport by locating its window in the .jg catalog and wiring a shipped alias or override in WinboxHandlerMap. - Field encoding/decoding: Implement new UI-type encoders in WinboxFieldResolver.EncodeField and decoders in WinboxRecordCodec.FormatTyped by reading the authoritative types.* functions from webfig master*.js. - Action verbs and streaming monitors: Wire .jg doit/action commands and query/pollcmd monitors through WinboxNativeM2Operations. - Live verification: Probe raw M2 frames with WinboxM2Client test classes and trace real connection writes via OnWriteRow to confirm exact bytes. - Use Case: A firewall dst-port field is silently dropped on write. Use the Skill to find its multinumberrange uitype in the .jg, read types.multinumberrange.put in master*.js, implement the flat u32[] range encoding, and verify the round-trip against a live router. ## Quick Start Ask the AI to add native WinBox support for a RouterOS path or fix a mis-encoded field, providing the router version and the path or field name involved.

Frequently Asked Questions about winbox-native-dev

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a new RouterOS path to the tik4net WinBoxNative transport?

Find the path's window in the .jg catalog to get its handler numbers and menu label, then add a shipped alias in WinboxHandlerMap or use connection.PathOverride for one-off cases. Verify with LoadAll over WinboxNative returning rows instead of throwing.

How do I fix a field that is silently dropped or mis-encoded over WinBox M2?

Locate the field's id and uitype in the .jg catalog, read the matching types.<uitype>.put/get functions in webfig master*.js, then add cases to WinboxFieldResolver.EncodeField and WinboxRecordCodec.FormatTyped. Confirm the exact bytes with an OnWriteRow trace and a live round-trip test.

Why does a native WinBox read return empty data or a 0xFE00xx error?

Common causes include board-gated windows where the handler differs per board class, using GetAll on a singleton handler instead of GetSingleton, or error codes colliding with command numbers. Check the window kind in the .jg and match the error text via WinboxNativeConnection.TranslateM2Error.

Where does the .jg catalog come from and is it in the repository?

The .jg catalog is MikroTik's version-volatile file and is not redistributed with the repository. Obtain it from the library runtime cache under %TEMP%/tik4net/<version>, dump it from a live router with WinboxDumpCatalogTest, or fetch it over HTTP from /webfig/<name>.jg with Accept-Encoding: gzip.

When should I use this skill instead of the mikrotik or mikrotik-cli-probe skills?

Use this skill only for the structured M2 (nv/jsproxy) layer of the WinBoxNative transport. For plain configuration queries use the mikrotik skill, and for the CLI/terminal layer use mikrotik-cli-probe.