本文へ移動
cccskills
無料GitHub で公開

emulators-fmt-audit

Build, audit, and modify EMULATORS runtime `.fmt` formatter files and keep them synchronized with C++ `getInfoStructure()` producers and their `.hpp` field documentation. Use when adding, renaming, or removing `InfoStructure` attributes or nested structures; diagnosing missing console fields; reviewing formatter includes, formatter names, placeholders, arrays, nested invocations, or table parameters; or changing namespace-specific `.fmt` files under `projects`.

インストール方法を見る

含まれるファイル(3)

  • SKILL.md4.7 KB
  • agents/openai.yaml233 B
  • references/fmt-language.md3.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

EMULATORS FMT Audit

Audit the complete contract from a C++ producer to its runtime text output:

getInfoStructure() -> documented fields in .hpp -> formatter block -> including machine .fmt -> command/output stream

Read references/fmt-language.md completely before creating or changing a .fmt file.

Workflow

  1. Identify every relevant getInfoStructure() implementation and its inheritance chain.
  2. Record each exact result.add ("KEY", ...) as either an attribute or a nested InfoStructure.
  3. Include inherited fields only through the documented parent contract. Do not guess keys from member names.
  4. Compare the actual keys with the Doxygen block immediately associated with the declaration in the .hpp.
  5. Locate formatter blocks by .CLASSNAME, nested key name, and command wrapper name.
  6. Follow every leading ?path.fmt include recursively. Resolve paths as the runtime does from the emulator working directory/configuration.
  7. Compare formatter placeholders with actual keys and report missing, stale, and mistyped fields.
  8. Check all source machine variants under projects that include the shared formatter, especially normal and remote consoles.
  9. Propose or apply the smallest synchronized change across C++, .hpp documentation, and .fmt.
  10. Validate the formatter parse and, when possible, format a real InfoStructure through the formatter used by the command.
  11. When the formatter belongs to a C64, VIC-20, C264, ZX80, ZX81, ZX Spectrum, or MSX command or changes its documented visible output, review and update the corresponding maintained guide: docs/C64Emulator_UserGuide.docx, docs/VIC20Data/VIC20Emulator_UserGuide.docx, docs/C264Data/C264Emulator_UserGuide.docx, docs/ZX81Data/ZX81Emulator_UserGuide.docx, docs/ZXSpectrumData/ZXSpectrumEmulator_UserGuide.docx, or docs/MSXData/MSXEmulator_UserGuide.docx. Verify local-console and remote-channel availability through the full effective command-builder chain, including the currently duplicated MCHEmul::StandardCommandBuilder link constructed by the MSX entry points.

Contract rules

  • Treat key spelling and case as an API.
  • Document every field added by the method, with exact formatter spelling.
  • Classify nested data as InfoStructure, not Attribute.
  • Preserve inherited formatter blocks unless the subclass changes the exposed structure.
  • Missing attributes and nested structures produce empty text and can hide stale placeholders. Audit explicitly.
  • Treat .fmt files under projects as the canonical sources. A full all build from the repository root distributes them intelligently to emulators, monitors, setups, and any other runtime/package destinations.
  • Do not edit distributed .fmt copies outside projects unless the user explicitly requests it. After changing canonical files, use the normal all build/distribution workflow when validation of copies is required.
  • Keep shared chip formatters in projects/COMMODORE/Commodore.fmt when several machines consume the same class.
  • Keep machine command wrappers in their machine namespace .fmt.
  • Update both local-console and remote-console source entry files under projects when they duplicate rather than include a definition.
  • Preserve comments, block ordering, indentation, and CRLF conventions.

Search commands

rg -n "getInfoStructure|result\\.add" include/COMMODORE src/COMMODORE
rg -n ";(CIA|VIA|TED)|@(CIA|VIA|TED)" projects --glob "*.fmt"
rg -n "\\?\\.\\/.*\\.fmt|;[A-Za-z0-9_.-]+|@[A-Za-z0-9_.-]+[?>]?" projects --glob "*.fmt"

Use git diff to identify newly added, removed, or renamed keys, but verify the complete current method rather than auditing only the diff.

Reporting

Separate findings into:

  • confirmed mismatch;
  • missing presentation;
  • stale presentation;
  • optional presentation;
  • inheritance/include dependency;
  • validation limitation.

For every proposed change name the class, method, header, formatter block, and all affected canonical .fmt entry points under projects. Do not list distributed copies as files to edit; mention that all will regenerate them when relevant. Do not modify C++ or .fmt when the user requested analysis or proposals only.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Validate Commodore 1540/1541/1541C/1541-II compatible disk-drive behavior in EMULATORS, including IEC serial bus protocol, device numbers, KERNAL traps, CBM DOS commands/status, D64 image parsing, BAM/directory/file chains, PETSCII filenames, 6502 drive CPU/ROM/RAM expectations, 6522 VIA wiring, GCR/track/sector geometry, motor/head timing, and compatibility boundaries for 1541-like devices. Use when Codex reviews or edits C64, VIC-20, C264, COMMODORE disk, serial I/O, D64, CBM DOS, IEC, VIA, GCR, or 1541 drive code.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Validate Commodore 64 CIA 6526 emulation in EMULATORS, including CIA1/CIA2 $DC00/$DD00 register behavior, ports, DDRs, keyboard/joystick matrix, IEC/user port, VIC bank selection, timers A/B, underflow timing, PB toggle/pulse output, TOD clock/alarm, serial shift register, FLAG, ICR masks and IRQ/NMI lines. Use when Codex reviews or edits C64 CIA, timers, ports, keyboard, joystick, serial bus, interrupts, TOD, or VIC bank control.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Validate Commodore 64 memory map, PLA/bank switching, 6510 port $0000/$0001 behavior, VIC bank selection, color RAM, ROM/RAM overlays, cartridge mapping, and mirrored I/O in the EMULATORS C64 namespace. Use when Codex reviews or edits C64 memory, PLA, CPU-visible address decoding, VIC-visible memory, color memory, char ROM, cartridge, expansion I/O, or mapped chip register behavior.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Validate Commodore MPS-801 serial dot matrix printer behavior in EMULATORS, including SerialPrinterMPS801 classes and their MatrixPrinterEmulation and SerialPrinterPeripheralSimulation hierarchy, IEC/KERNAL-trap printer routing, device numbers, secondary addresses, PETSCII/character sets, 6x7 glyphs, double width, graphics mode, reverse field, tab and dot positioning, line/page geometry, PostScript output, and fidelity boundaries. Use when Codex reviews or edits COMMODORE MPS801 printer code, generated printer output, PostScript printer templates, C64/VIC-20/C264 serial-printer behavior, or compares implementation against .codex/docs/MPS801.pdf and historical MPS-801 sources.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Validate Commodore MPS-802 and 1526 serial dot matrix printer behavior in EMULATORS, including SerialPrinterMPS802 classes and their MatrixPrinterEmulation and SerialPrinterPeripheralSimulation hierarchy, IEC/KERNAL-trap printer routing, device numbers, secondary-address functions, PETSCII/character sets, 8x8 glyphs, enhanced width, reverse and paging modes, formatter strings, programmable characters, line/page geometry, PostScript output, and fidelity boundaries. Use when Codex reviews or edits COMMODORE MPS802 printer code, generated printer output, PostScript printer templates, C64/VIC-20/C264 serial-printer behavior, or compares implementation against .codex/docs/MPS802.pdf, the MPS-802 user guide, and 1526/MPS-802/4023 service information.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Validate Commodore 64 SID 6581/8580 sound emulation in EMULATORS, including $D400-$D7FF register decoding, voices, frequency, pulse width, control bits, ADSR/envelope behavior, oscillator sync/ring/noise/test, filters, volume DAC/sample clicks, paddles, read-only registers, mirrors, and reSID integration. Use when Codex reviews or edits SID, Sound, audio wrapper, register, filter, waveform, envelope, or mapped SID behavior.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Commnets のスキルをすべて見る

このスキルの問題を報告する