"Author and debug Haiku Module classes, direct parameter/state
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill params-state-rng --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Params State Rng?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-params-state-rng)More formats (shields.io, HTML) on the badges page.
---
name: params-state-rng
description: "Author and debug Haiku Module classes, direct parameter/state
APIs, RNG keys, naming scopes, and interception hooks."
disable-model-invocation: true
metadata:
disco-role: operating
license: Apache 2.0
---
# params-state-rng
Use this sub-skill when you need to write or debug code that lives *inside* a Haiku transformed function and directly creates modules, parameters, mutable state, random keys, names, or API hooks.
## Use this for
- Implementing `hk.Module` subclasses and their `__init__` / `__call__` patterns.
- Creating or reusing values with `hk.get_parameter`, `hk.get_state`, and `hk.set_state`.
- Debugging Haiku parameter/state tree keys, module names, name scopes, and parameter sharing.
- Managing stochastic code with `hk.PRNGSequence`, `hk.next_rng_key`, `hk.next_rng_keys`, and `hk.maybe_next_rng_key`.
- Applying advanced hooks: `hk.custom_creator`, `hk.custom_getter`, `hk.custom_setter`, and `hk.intercept_methods`.
## Route away when
- Choosing `hk.transform`, `hk.transform_with_state`, `hk.without_apply_rng`, or multi-transform wrappers: use the `core-transforms` sub-skill.
- Selecting built-in layers, networks, attention, convolutions, normalization, or RNN modules: use the `modules-and-networks` sub-skill.
- Wrapping Haiku state/RNG through `jax.vmap`, `jax.scan`, `jax.grad`, control flow, lifting, or data-structure utilities: use the `jax-interop-and-advanced` sub-skill.
- Translating Haiku parameters/state to Flax variable collections: use the `flax-interop` sub-skill.
## Operating procedure
1. Confirm that the code using Haiku direct APIs will run inside a transformed function. If not, first choose the correct transform in `core-transforms`.
2. Sketch the expected parameter and state tree keys before coding: outer module/name-scope path first, leaf parameter/state name second.
3. For custom modules, call `super().__init__(name=name)` before creating submodules or values, and create parameters/state inside transformed calls rather than at import time.
4. For state, use `hk.transform_with_state` and pass state into and out of `apply`.
5. For RNG, pass a non-`None` JAX PRNG key to `init` or `apply` whenever `hk.next_rng_key()` may execute; use `hk.maybe_next_rng_key()` only for deliberately optional randomness.
6. Run the bundled smoke script after edits to confirm parameter keys, state updates, and RNG failure/recovery behavior.
## Bundled references and script
- Read [references/api-reference.md](references/api-reference.md) for compact API signatures, tree-key rules, naming behavior, and hook callback contracts.
- Read [references/state-rng-workflows.md](references/state-rng-workflows.md) for end-to-end recipes covering custom modules, stateful counters, stochastic paths, optional RNG, naming, and interception.
- Read [references/troubleshooting.md](references/troubleshooting.md) when you see context, duplicate-name, missing-RNG, mutable-state, or tree-key errors.
- Run [scripts/haiku_rng_state_smoke.py](scripts/haiku_rng_state_smoke.py) to verify a local Haiku/JAX environment with deterministic synthetic parameter, state, and RNG checks.
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!