Headline: three contributor-led follow-ups from the #350 RFC plus the #366 onboarding piece. The repeat-loop storm guard now exempts obviously-safe inspector tools (read_file, list_directory, job_output, list_jobs) so a model intentionally re-reading state isn't flagged as stuck. A new wait_for_job(jobId, timeoutMs?) tool replaces N-iteration polling loops with a single blocking call — returns the moment the job exits or emits new output. And /skill new <name> finally provides the missing creation entry-point for user skills.
Features
- feat(storm): stormExempt flag on ToolDefinition (#350, PR #388 by @ctharvey) — set on
read_file,list_directory,job_output,list_jobs. Cheap state-inspection no longer trips the repeat-loop guard. Mutating tools and unknown tools still go through the existing window-and-threshold check. - feat(jobs): wait_for_job(jobId, timeoutMs?) (#350, PR #390 by @ctharvey) — blocks until the job exits or emits new output, bounded by
timeoutMs(default 5000, clamped to 0..30000). Returns{ exited, exitCode, latestOutput };latestOutputis the delta since the call started, not the full buffer. Rides the existing job registry's exit + output events. One call replaces N polling iterations. - feat(skills): /skill new scaffold (#366, PR #394) —
/skill new <name>writes a stub at<project>/.reasonix/skills/<name>.mdwith minimal frontmatter + a comment block listing the optional knobs (runAs,allowed-tools,model)./skill new <name> --globalwrites under~/.reasonix/skills/for cross-project use. The empty/skill listnow ends with an explicit "no remote registry yet — scaffold one with/skill new <name>" line so users don't hunt for a marketplace that doesn't exist. README + zh-CN README gain an "Author your first skill" walkthrough.
Bug fixes
- fix(skills): atomic create with wx flag (PR #394) — close the TOCTOU race between
existsSync(...)andwriteFileSync(...)that CodeQL flagged. The existence check IS the atomic write now;EEXISTfrom a parallel writer surfaces as the same "skill already exists" error instead of silently overwriting.
Install
```bash
npm install -g reasonix@0.30.5
or
bunx reasonix@0.30.5 code
```
Full Changelog: v0.30.4...v0.30.5