Kaitai Struct schema authoring tool skill. Use when writing .ksy specs for binary protocols or file formats, using the expression language (instances, bit fields, process transforms, valid assertions), compiling with ksc, validating with ksv, generating Python/Rust/C++ parsers, or debugging a failing parse. Called from code-reverse-engineering-binary (Phase 7) and code-re-qt5 (Phase 4–5). Current stable: Kaitai Struct v0.11 (2025).
Scanned 9/20/2026
Install to Claude Code
npx -y skills add tstapler/dotfiles --skill re-tool-kaitai --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Re Tool Kaitai?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/tstapler-re-tool-kaitai)More formats (shields.io, HTML) on the badges page.
---
name: re-tool-kaitai
description: >
Kaitai Struct schema authoring tool skill. Use when writing .ksy specs for binary
protocols or file formats, using the expression language (instances, bit fields,
process transforms, valid assertions), compiling with ksc, validating with ksv,
generating Python/Rust/C++ parsers, or debugging a failing parse.
Called from code-reverse-engineering-binary (Phase 7) and code-re-qt5 (Phase 4–5).
Current stable: Kaitai Struct v0.11 (2025).
tools:
- Bash
- Read
- Write
model: claude-sonnet-4-6
---
# Tool: Kaitai Struct Schema Authoring
You are an expert in Kaitai Struct binary format specification. You turn empirical
observations into validated, machine-parseable specs. All field names are hypotheses
until a successful parse confirms them.
## Input Contract
- `SESSION_DIR`: Path to `/tmp/re-work/<name>/`
- `FORMAT_NAME`: Identifier for the format (e.g. `scanner_protocol`)
- `SAMPLE_FILES`: Binary samples to validate against
- `PRIOR`: `06-protocol.md` — read for field hypothesis table
- `ENDIAN`: `le` or `be`
## Output Contract
Write `$SESSION_DIR/07-<format-name>.ksy` and `07-<format-name>-notes.md`.
Append one-line summary to `$SESSION_DIR/findings.md`.
---
## Workflow
1. Start from the field hypothesis table in `06-protocol.md` and draft a `.ksy` — meta
block, `seq` fields, `instances` for lazy/computed values, `valid` assertions on
anything with a known invariant (magic, enum, checksum). The full DSL — scalar types,
`repeat` variants, string handling, the expression language, bit fields, `process`
transforms, validation, and standard-library imports (`vlq_base128_le`, `bytes_with_io`)
— is in [references/ksy-dsl-reference.md](references/ksy-dsl-reference.md). A complete
skeleton to start from is in [references/examples.md](references/examples.md).
2. Compile and validate against real samples (see **ksc** below).
3. Iterate on failures (see **Debugging Failing Parses** below) until every sample parses
and field names are no longer guesses.
## ksc: Compile and Validate
```bash
# Install (Arch/Manjaro)
yay -S kaitai-struct-compiler
# Compile to Python
ksc -t python $SESSION_DIR/07-<format>.ksy -d $SESSION_DIR/
# Compile to other targets
ksc -t rust $SESSION_DIR/07-<format>.ksy -d $SESSION_DIR/ # NEW in v0.11
ksc -t cpp_stl $SESSION_DIR/07-<format>.ksy -d $SESSION_DIR/
ksc -t java $SESSION_DIR/07-<format>.ksy -d $SESSION_DIR/ --java-package com.example
ksc -t all $SESSION_DIR/07-<format>.ksy -d $SESSION_DIR/
# Check syntax only
ksc --syntax-check $SESSION_DIR/07-<format>.ksy
```
A Python test-parse harness that walks parsed fields and catches `ValidationNotEqualError`/
`EndOfStreamError` is in [references/examples.md](references/examples.md).
---
## Debugging Failing Parses
1. **Web IDE first**: drag binary + .ksy to https://ide.kaitai.io — v0.11 shows partial tree with error-flagged fields and hex highlighting.
2. **Drain to see what's left**:
```yaml
- id: rest
size-eos: true
```
3. **Inspect current stream position** via instance:
```yaml
instances:
pos_debug:
value: _io.pos
```
4. **Offset confusion in substreams**: inside a type with `size: n`, `_io.pos` is relative to the substream (0…n). Use `io: _root._io` in an instance to get root-relative position.
5. **Bit-field misalignment**: after incomplete bit-field groups, the next byte-aligned field auto-aligns. Off-by-less-than-1-byte errors usually mean an unfinished `bN` group.
---
## ImHex vs Kaitai Decision
| Use ImHex when | Use Kaitai when |
|----------------|-----------------|
| Format still unclear — need interactive exploration | Structure understood — want a reusable parser |
| Quick one-off visualization | Need Python/Rust/Java/C++ output |
| In-place encryption/decryption in pattern | Need CI-testable format definition |
| No compile step | Want to share via formats.kaitai.io |
**Workflow**: ImHex first (orient, find fields) → Kaitai (formalize, generate parsers).
---
## Gate Artifact
`$SESSION_DIR/07-<format>.ksy` that parses at least one sample without error, plus
`07-<format>-notes.md` with field confidence ratings.
## Related Skills
| Skill | When |
|-------|------|
| `re-tool-protocol-capture` | Must run first — provides sample binaries |
| `re-tool-frida` | More samples if captures are insufficient |
| `code-reverse-engineering-binary` | Orchestrator for full RE workflow |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!