transition
Skill6 starsChanged 14 days agoApache-2.0View on GitHub
Define how state changes over time through rules, triggers, and effects. Use when modeling state machines, defining workflows, specifying event handlers, or documenting system dynamics.
In this repository42 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- attributeSkill
- auditSkill
- gap-analysis-workflowSkill
- checkpointSkill
- classifySkill
- compareSkill
- constrainSkill
- critiqueSkill
- debug-workflowSkill
- decomposeSkill
- delegateSkill
- detectSkill
- digital-twin-bootstrapSkill
- digital-twin-sync-workflowSkill
- discover-capabilitiesSkill
- discoverSkill
- executeSkill
- explainSkill
- generateSkill
- groundSkill
- inquireSkill
- integrateSkill
- invokeSkill
- measureSkill
- mutateSkill
- observeSkill
- persistSkill
- perspective-validationSkill
- planSkill
- predictSkill
- recallSkill
- receiveSkill
- retrieveSkill
- rollbackSkill
- searchSkill
- sendSkill
- simulateSkill
- stateSkill
- synchronizeSkill
- transformSkill
- verifySkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 7 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 49
Document required state for transition
- Distinctive: line 53
Specify effects: Document what changes during transition
- Distinctive: line 58
Validate completeness: Check for missing transitions
- Distinctive: line 63
Ground rules: Document evidence for each transition rule
- Distinctive: line 321
Verification tools: Read (to verify code references)
- Distinctive: line 334
Do not execute transitions while modeling
- Very specific: line 349
Never use transition to execute changes (use mutate)
- Distinctive: line 350
Avoid modeling transitions without state model first
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Intent
Define the rules governing how a system's state changes over time. This capability captures state machine semantics: what triggers transitions, what preconditions must hold, and what effects occur.
Success criteria:
- Transition rules clearly specified
- Preconditions and effects documented
- Triggers identified with evidence
- State machine is deterministic (or non-determinism noted)
Compatible schemas:
schemas/output_schema.yaml
Inputs
| Parameter | Required | Type | Description |
from_state | Yes | object | Initial state or state pattern |
to_state | No | object | Target state (optional for discovery mode) |
triggers | No | array | Events or conditions that cause transition |
Inputs not listed here are outside the capability's contract: a workflow step that binds them gets W604 (STANDARD v1.1 §5.5).
Procedure
- Identify state variables: Determine what can change
- Extract mutable properties from state model
- Identify discrete vs continuous variables
- Note invariants (what cannot change)
- Discover triggers: Find what causes state changes
- Identify events (user actions, system events)
- Find conditions (thresholds, timeouts)
- Note external inputs that affect state
- Define preconditions: Specify when transitions can occur
- Document required state for transition
- Identify guards and conditions
- Note blocking conditions
- Specify effects: Document what changes during transition
- List state variable changes
- Note side effects (events emitted, actions taken)
- Capture ordering constraints
- Validate completeness: Check for missing transitions
- Identify unreachable states
- Find states with no outgoing transitions
- Note non-deterministic cases
- Ground rules: Document evidence for each transition rule
- Reference code, configuration, or documentation
- Note confidence in each rule
Output Contract
Return a structured object:
rules:
- id: string # Unique rule identifier
name: string # Human-readable name
from: object # Source state pattern
to: object # Target state pattern
trigger:
type: string # event, condition, timeout
specification: any # Trigger details
preconditions: array[string] # Required conditions
effects: array[string] # State changes
priority: number # Resolution priority for conflicts
preconditions: # Required conditions of the rules that apply from `from_state`
- rule: string # Rule ID
condition: string
effects: # State changes those rules make
- rule: string # Rule ID
change: string
analysis:
reachability: object # Which states are reachable
completeness: number # Coverage estimate
non_determinism: array # Ambiguous transitions
confidence: 0..1
evidence_anchors: ["file:line", "doc:section"]
assumptions: []Field Definitions
| Field | Type | Description |
rules | array | Transition rules |
rules[].from | object | Source state pattern |
rules[].to | object | Target state pattern |
rules[].trigger | object | What causes the transition |
rules[].preconditions | array | Conditions that must hold |
rules[].effects | array | Changes caused by transition |
preconditions | array<object> | Conditions required by the rules that apply from from_state, each tagged with its rule |
effects | array<object> | State changes those rules make, each tagged with its rule |
analysis | object | State machine analysis results |
confidence | number | 0.0-1.0 confidence the rules are complete and correct |
evidence_anchors | array | References to where each rule is defined |
assumptions | array | Assumptions about the state machine |
Examples
Example 1: Order State Transitions
Input:
from_state:
entity: "order"
status: "*"Output:
rules:
- id: "order-create"
name: "Create Order"
from: { status: null }
to: { status: "pending" }
trigger:
type: "event"
specification: "OrderCreated"
preconditions:
- "cart is not empty"
- "user is authenticated"
effects:
- "order.status = 'pending'"
- "order.created_at = now()"
- "emit OrderCreatedEvent"
priority: 1
- id: "order-confirm"
name: "Confirm Order"
from: { status: "pending" }
to: { status: "confirmed" }
trigger:
type: "event"
specification: "PaymentReceived"
preconditions:
- "payment.amount >= order.total"
- "inventory available"
effects:
- "order.status = 'confirmed'"
- "order.confirmed_at = now()"
- "reserve inventory"
- "emit OrderConfirmedEvent"
priority: 1
- id: "order-cancel"
name: "Cancel Order"
from: { status: ["pending", "confirmed"] }
to: { status: "cancelled" }
trigger:
type: "event"
specification: "CancelRequested"
preconditions:
- "order.status != 'shipped'"
effects:
- "order.status = 'cancelled'"
- "release inventory"
- "emit OrderCancelledEvent"
priority: 2
preconditions:
- rule: "order-create"
condition: "cart is not empty"
- rule: "order-create"
condition: "user is authenticated"
- rule: "order-confirm"
condition: "payment.amount >= order.total"
- rule: "order-confirm"
condition: "inventory available"
- rule: "order-cancel"
condition: "order.status != 'shipped'"
effects:
- rule: "order-create"
change: "order.status = 'pending'"
- rule: "order-create"
change: "order.created_at = now()"
- rule: "order-create"
change: "emit OrderCreatedEvent"
- rule: "order-confirm"
change: "order.status = 'confirmed'"
- rule: "order-confirm"
change: "order.confirmed_at = now()"
- rule: "order-confirm"
change: "reserve inventory"
- rule: "order-confirm"
change: "emit OrderConfirmedEvent"
- rule: "order-cancel"
change: "order.status = 'cancelled'"
- rule: "order-cancel"
change: "release inventory"
- rule: "order-cancel"
change: "emit OrderCancelledEvent"
analysis:
reachability:
pending: ["confirmed", "cancelled"]
confirmed: ["shipped", "cancelled"]
shipped: ["delivered"]
delivered: []
cancelled: []
completeness: 0.9
non_determinism: []
confidence: 0.85
evidence_anchors:
- "app/models/order.rb:45-120"
- "app/services/order_service.rb:15-80"
assumptions:
- "State machine defined in Order model"
- "All transitions go through OrderService"Example 2: Authentication State Transitions
Input:
from_state:
entity: "user_session"
status: "unauthenticated"Output:
rules:
- id: "login-success"
name: "Successful Login"
from: { authenticated: false }
to: { authenticated: true }
trigger:
type: "event"
specification: "CredentialsValidated"
preconditions:
- "credentials.valid == true"
- "user.locked == false"
- "failed_attempts < max_attempts"
effects:
- "session.authenticated = true"
- "session.user_id = user.id"
- "session.expires_at = now() + 24h"
- "reset failed_attempts"
priority: 1
- id: "login-failure"
name: "Failed Login Attempt"
from: { authenticated: false }
to: { authenticated: false, failed_attempts: "+1" }
trigger:
type: "event"
specification: "CredentialsRejected"
preconditions: []
effects:
- "increment failed_attempts"
- "if failed_attempts >= max_attempts: lock user"
priority: 1
- id: "logout"
name: "Logout"
from: { authenticated: true }
to: { authenticated: false }
trigger:
type: "event"
specification: "LogoutRequested"
preconditions: []
effects:
- "session.authenticated = false"
- "session.destroy()"
priority: 1
preconditions:
- rule: "login-success"
condition: "credentials.valid == true"
- rule: "login-success"
condition: "user.locked == false"
- rule: "login-success"
condition: "failed_attempts < max_attempts"
effects:
- rule: "login-success"
change: "session.authenticated = true"
- rule: "login-success"
change: "session.user_id = user.id"
- rule: "login-success"
change: "session.expires_at = now() + 24h"
- rule: "login-success"
change: "reset failed_attempts"
- rule: "login-failure"
change: "increment failed_attempts"
- rule: "login-failure"
change: "if failed_attempts >= max_attempts: lock user"
analysis:
reachability:
unauthenticated: ["authenticated", "locked"]
authenticated: ["unauthenticated"]
locked: ["unauthenticated"]
completeness: 0.95
non_determinism: []
confidence: 0.9
evidence_anchors:
- "app/controllers/sessions_controller.rb:10-50"
- "app/models/user.rb:80-95"
assumptions:
- "Session timeout handled by middleware"
- "Lock mechanism implemented in User model"Verification
- Each rule has from and to state patterns
- Triggers are specified for each rule
- Preconditions are testable
- Effects are specific and verifiable
- Reachability analysis covers all known states
Verification tools: Read (to verify code references)
Safety Constraints
mutation: falserequires_checkpoint: falserequires_approval: falserisk: low
Capability-specific rules:
- Document non-determinism explicitly
- Flag missing transitions for terminal states
- Note when transitions have side effects
- Do not execute transitions while modeling
Composition Patterns
Commonly follows:
state- State model provides basis for transitionsobserve- Observations reveal transition patternsdiscover- Discovery finds unknown transitions
Commonly precedes:
simulate- Transitions drive simulationplan- Transitions inform action planningverify- Transitions specify expected behavior
Anti-patterns:
- Never use transition to execute changes (use
mutate) - Avoid modeling transitions without state model first
Workflow references:
- See
reference/workflow_catalog.yaml#world_model_buildfor transitions in world modeling - See
reference/workflow_catalog.yaml#digital_twin_sync_loopfor transition application
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

