Refactor for Determinism
Build reliable skills by separating deterministic steps from judgment-based steps.
Core Principle
Deterministic steps belong in scripts. Use SKILL.md to orchestrate the workflow and reserve judgment for the non-deterministic parts.
Workflow
- Identify Deterministic vs Non-Deterministic Work
For each step in the skill:
-
Deterministic: repeatable, mechanical, or validation-heavy steps → script candidates
-
Non-deterministic: judgment, interpretation, creative choices → keep in SKILL.md
Examples of deterministic steps:
-
Running quality checks
-
Verifying clean git state
-
Updating version strings
-
Promoting CHANGELOG sections
-
Collecting diff context for review
Examples of non-deterministic steps:
-
Writing changelog content
-
Selecting a solution approach
-
Code review judgments
-
Deciding release timing
- Design Scripts for Deterministic Steps
For each deterministic step:
-
Create a script in scripts/ within the skill directory
-
Make it self-contained with clear error messages
-
Validate inputs and exit non-zero on failure
-
Prefer small, single-purpose scripts
- Update SKILL.md to Use Scripts
-
Replace manual command lists with script calls
-
Reference scripts using relative paths: scripts/...
-
Keep judgment steps explicit in prose
- Document Boundaries
Make the line between scripted and non-scripted steps obvious:
-
Use section headers like "Deterministic Steps" and "Judgment Steps"
-
Call out where human/agent judgment is required
Output Format
Determinism Audit
Deterministic Steps (script candidates)
- [Step] → [script name]
Non-Deterministic Steps (keep in SKILL.md)
- [Step] → [why it needs judgment]
Script Plan
- scripts/[name] - [purpose, inputs, outputs]
SKILL.md Updates
- [Where to call each script]
Common Mistakes
Mistake Fix
Scripting judgment Keep decision-making in SKILL.md
One giant script Split into small, focused scripts
Silent failures Print clear errors and exit non-zero
Hardcoded paths Use repo-relative paths
Forgetting SKILL.md updates Always wire scripts into instructions
What NOT to Do
-
Do NOT hide decisions inside scripts
-
Do NOT make scripts that require manual editing
-
Do NOT mix multiple responsibilities into one script
-
Do NOT add extra documentation files beyond SKILL.md