Context
jig's design principle #1 is "hooks = deterministic enforcement, skills = judgment." That split holds for secret-scan, the review-evidence gate, etc., but not for the core "work goes through a slice" discipline when editing source files.
The gap
There's no PreToolUse-style guardrail that fires when an agent edits a tracked source file without an IN_PROGRESS slice claiming it. spec-workflow is a skill the agent has to choose to invoke, so slice-compliance for a source edit is left entirely to the agent's judgment.
In practice, an agent with any bias toward "just fix the small thing" edits the file directly and skips the lifecycle — and the only thing catching it is the human noticing after the fact. This recurs.
The cost isn't proportional to the diff: a 1–2 line CSS change can encode a load-bearing, recurring design decision (a banner position, an alignment) — exactly what the slice + lightweight-decisions.md capture exists to make durable. Skipping the slice means the decision doesn't land where a future session reads it, so the same thing gets re-argued sessions later.
Suggestion (defer to you on whether/how)
Would jig consider an optional, opt-in guardrail hook that, on Edit/Write to configured source globs, checks jig state (workflow.py / .jig) for an IN_PROGRESS slice and, when there's none, warns (or configurably blocks) with a pointer to start a slice / run the intake?
- Strictness (warn vs block) and globs would be per-project config.
- Makes "no source edits outside a slice" mechanical, consistent with the hooks-are-deterministic principle, instead of relying on the agent remembering.
Related: for a new external reference (e.g. a new design/mockup version), the documented entry point is /jig:reframe → spec, but nothing routes the agent there automatically either — a guardrail could nudge that intake too.
Reported from real usage (a card-games project on jig 2.7.0) where an agent repeatedly hand-edited CSS outside slices.
Context
jig's design principle #1 is "hooks = deterministic enforcement, skills = judgment." That split holds for secret-scan, the review-evidence gate, etc., but not for the core "work goes through a slice" discipline when editing source files.
The gap
There's no PreToolUse-style guardrail that fires when an agent edits a tracked source file without an
IN_PROGRESSslice claiming it.spec-workflowis a skill the agent has to choose to invoke, so slice-compliance for a source edit is left entirely to the agent's judgment.In practice, an agent with any bias toward "just fix the small thing" edits the file directly and skips the lifecycle — and the only thing catching it is the human noticing after the fact. This recurs.
The cost isn't proportional to the diff: a 1–2 line CSS change can encode a load-bearing, recurring design decision (a banner position, an alignment) — exactly what the slice +
lightweight-decisions.mdcapture exists to make durable. Skipping the slice means the decision doesn't land where a future session reads it, so the same thing gets re-argued sessions later.Suggestion (defer to you on whether/how)
Would jig consider an optional, opt-in guardrail hook that, on
Edit/Writeto configured source globs, checks jig state (workflow.py/.jig) for anIN_PROGRESSslice and, when there's none, warns (or configurably blocks) with a pointer to start a slice / run the intake?Related: for a new external reference (e.g. a new design/mockup version), the documented entry point is
/jig:reframe→ spec, but nothing routes the agent there automatically either — a guardrail could nudge that intake too.Reported from real usage (a card-games project on jig 2.7.0) where an agent repeatedly hand-edited CSS outside slices.