• .claude/skills/synchronet-control/SKILL.md .claude/skills/synchronet-j

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri May 22 18:23:43 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/99ac66fe4c2401992695d1ee
    Added Files:
    .claude/skills/synchronet-control/SKILL.md .claude/skills/synchronet-javascript/SKILL.md .claude/skills/synchronet-logs/SKILL.md .claude/skills/synchronet-menus/SKILL.md .claude/skills/synchronet-mqtt/SKILL.md
    Log Message:
    .claude/skills: add Synchronet authoring skills for Claude Code

    Five Claude Code skills covering the day-to-day sysop / developer
    workflows on a Synchronet install. The skills are self-contained
    reference docs that the Claude Code CLI auto-discovers when working in
    the sbbs tree; they trigger on natural-language descriptions of common
    tasks and load only the relevant body on demand.

    - synchronet-menus: authoring text/menu/* files, Ctrl-A and @-codes,
    the file-extension priority by terminal type, .Xcol width variants,
    language overlays, security gating, mouse hotspots.

    - synchronet-logs: locating the right log file or stream on Windows or
    *nix Ä per-category files in data/, the per-day Terminal Server log,
    the Web Server access log, the lprintf console stream and its routing
    to syslog/journalctl/console depending on daemon mode and init
    system, the sbbsctrl-on-Windows-only data/logs/{TS,WS,MS,FS}*.LOG
    trap, multi-instance traps when sibling BBSes share a text/
    directory across hosts, the ip.can/ip-silent.can field format.

    - synchronet-mqtt: discovering whether MQTT is enabled (the [MQTT]
    section of ctrl/main.ini, not sbbs.ini), reading the broker config,
    connecting with mosquitto_sub/pub (anonymous / user+pass / four TLS
    modes), full topic hierarchy, retained vs event semantics, and the
    control-plane topics (recycle/pause/resume/clear/node-set/input/msg)
    with production-impact warnings.

    - synchronet-control: controlling a running Synchronet instance via
    cross-platform semaphore files in ctrl/ and data/ (recycle, shutdown,
    pause, clear, with per-server .<service> and per-host .<hostname>
    suffix variants for shared-ctrl/ setups), POSIX signals to sbbscon,
    OS service managers (systemctl, service, launchctl, sc.exe), the
    Windows front-ends (sbbsctrl, sbbsNTsvcs, sbbs.exe), the node rerun
    utility, the won't-recycle-while-in-use gotcha, and the NO_RECYCLE
    flag. Cross-references synchronet-mqtt for situations where MQTT
    control is preferable even on the same host.

    - synchronet-javascript: the SpiderMonkey 1.8.5 dialect, the host
    object model (MsgBase, FileBase, User, system, msg_area/file_area,
    Socket, MQTT, etc.), how those APIs actually behave (including the
    get_all_msg_headers() lazy-field gotcha Ä touch a non-NULL field
    before any *_NULL field, with bracket-access as an escape hatch),
    writing tests in exec/tests/, and the stock exec/*.js ecosystem.

    Each skill is host-agnostic Ä no embedded local hostnames, IP
    addresses, BBSIDs, systemd unit names, or absolute filesystem paths.
    All four new-from-scratch skills (logs, mqtt, control, javascript-fix)
    were subagent-tested against realistic retrieval and diagnostic tasks
    on a live install before being committed.

    Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net