The scaffolded mod now writes .claude-flow/<name>-mod/status.json with the
fields the console reads (version 1, summary, modVersion, guard, calls as a
number, blocked, lastDenied), with a shape test and docs in the skill and README.
Co-Authored-By: RuFlo <ruv@ruv.net>
Local /<short>-mod command, status file, tighten-only secret guard where the plugin has write tools, tests, smoke steps M1-M3, README section.
Co-Authored-By: RuFlo <ruv@ruv.net>
A working template mod, validated and kit-tested on Claude Code 2.1.287 and
live-loaded with --plugin-dir: hybrid hooks.json (classic UserPromptSubmit
fallback that exits while the module runs, via MY_MOD_ACTIVE), a host
adapter over literal $ calls, refusal-tolerant status drawing, a namespaced
command, userConfig, engine-kit tests and a tsconfig extending the
generated types. create-mod skill carries the rules (tighten-only
tool.check, no process/http from event input, state in $.store/$.state,
namespaced commands) and the validate/test/typecheck loop.
ruflo-plugin-creator 0.2.1 -> 0.3.0 (smoke sentinel + step 11).
Co-Authored-By: RuFlo <ruv@ruv.net>
full-system-test surfaced 23/32 plugin smoke contracts failing on a
single drifted assertion: the smoke gate greps ADR-0001 for
`status: Proposed`, but those ADRs were long since promoted to
`Accepted` without updating the gate. Flip the assertion (label, grep,
message) Proposed -> Accepted only where the ADR is genuinely Accepted.
ruflo-core additionally had a stale version assertion (0.2.0 -> 0.2.2).
Left untouched: ruflo-adr, ruflo-browser, ruflo-intelligence — their
ADR-0001 is genuinely Proposed, so their smokes correctly assert it.
No plugin source or ADR changed — only the drifted test assertions.
All 32 plugin smoke contracts now pass; full-system-test is 4/4 green.
Co-Authored-By: RuFlo <ruv@ruv.net>