• .claude/skills/synchronet

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Friday, May 22, 2026 18:23:00
    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
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Friday, May 22, 2026 19:16:00
    https://gitlab.synchro.net/main/sbbs/-/commit/60bc25ddd5ee3f1d1b8364b7
    Added Files:
    .claude/skills/synchronet-text/SKILL.md
    Modified Files:
    .claude/skills/synchronet-logs/SKILL.md .claude/skills/synchronet-menus/SKILL.md
    Log Message:
    .claude/skills: add synchronet-text; refine menus & logs

    Add a new synchronet-text skill that covers the runtime text[] string
    database (ctrl/text.dat), the v3.20+ ctrl/text.ini runtime override
    file (default-section by-ID overrides, [substr] global substitution,
    [JS] for gettext()-wrapped strings), and ctrl/text.<lang>.ini
    per-language overlays. Sysop-focused; the developer-only textgen
    workflow for adding new string IDs stays in the CLAUDE.md
    instructions, not in this skill.

    synchronet-menus: trim the description to drop the text.dat reference
    (now covered by synchronet-text), update the intro to clarify that
    this skill owns the display-file side while synchronet-text owns the
    string database, and add a prominent redirect block inside the
    Ctrl-A section pointing readers at text.ini [substr] for BBS-wide
    Ctrl-A colour retheming -- a real failure path observed in testing
    where sysops (and agents) reach for attr.ini, find that it can't
    remap literal embedded Ctrl-A bytes, and conclude the goal is
    impossible when in fact text.ini [substr] does exactly that.

    synchronet-logs: correct the csts.tab description -- it's
    tab-separated ASCII with a header row, readable with cat/awk/a
    spreadsheet, not the 'binary-ish' file the original entry implied.

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

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Friday, May 22, 2026 19:16:00
    https://gitlab.synchro.net/main/sbbs/-/commit/b8d19ee45e2a91bd5198427f
    Added Files:
    .claude/skills/synchronet-jsexec/SKILL.md
    Log Message:
    .claude/skills: add synchronet-jsexec

    Migrated from the personal ~/.claude/skills/synchronet-jsexec/ version
    with one section rewritten for the public repo.

    The skill covers driving the jsexec runner: the two invocation modes
    (-r inline expression, scripted), the flags worth remembering, the jsexec-vs-BBS-session global surface (system/User/MsgBase/etc.
    available; bbs/console/client are not), a minimal MsgBase probe,
    step-tagged crash tracing with log() vs print() and the -A merge,
    when to use jsexec vs smbutil, runtime constraints, common pitfalls,
    and the Windows / debug-build invocation gotchas.

    The Windows section was rewritten to scrub local install layout
    (replaced literal C:/sbbs and S:/sbbs paths with <sbbs-src> and
    <install> placeholders) and to generalize the 'live BBS is holding
    the debug DLL lock' situation -- the personal version was scoped to
    the specific host VERT, the public version explains the same lesson
    in platform-neutral terms (three escalation options: switch
    configuration, build in an isolated git worktree, or stop the BBS
    briefly). Added a cross-reference to synchronet-control for the
    graceful-drain mechanism in the stop-restart option.

    Cross-references synchronet-javascript (the JS language and host
    API), synchronet-smbutils (storage-layer message-base repair), and synchronet-build (compiling Synchronet).

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

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Friday, May 22, 2026 19:16:00
    https://gitlab.synchro.net/main/sbbs/-/commit/ce4321c83a01b36d00db2968
    Added Files:
    .claude/skills/synchronet-smbutils/SKILL.md
    Log Message:
    .claude/skills: add synchronet-smbutils

    Migrated from the personal ~/.claude/skills/synchronet-smbutils/
    version. The skill covers the three SMB-level command-line tools that
    operate on Synchronet Message Base files directly (below the level of
    the BBS itself or the JS MsgBase API):

    * smbutil -- inspect/list/view/import/pack/renumber/lock/unlock
    operations on a base, plus the verbose-dump V command
    and the per-user mail-extraction recipe.
    * chksmb -- integrity scan; reports header / data / index / hash
    anomalies without modifying anything.
    * fixsmb -- destructive repair that rebuilds indexes/hashes and
    can renumber; covers when (not) to reach for it.

    Includes the SMB on-disk format references (wiki ref:smb, the 1993
    historical spec, the SMBLIB C source), the filespec convention shared
    by all three tools (path with no extension, or with a specific .shd /
    .sdt / .sid / .sha component), the [n] index-pitfall warning, a full investigate-a-corrupt-base workflow, and the boundary on when to use
    these tools versus the in-BBS interface or the MsgBase JS API.

    Only one host-specific bit needed scrubbing: an example Windows install
    path was S:\sbbs\ctrl (the personal versions drive letter); the
    in-repo version uses the conventional C:\sbbs\ctrl plus the Git
    Bash / MSYS mount-point form. Otherwise the personal SKILL.md was
    already host-agnostic.

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

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