    -- | This module is used for defining new types of rules for Shake build systems.
    --   Most users will find the built-in set of rules sufficient.
    module Development.Shake.Rule(
        -- * Defining builtin rules
        addBuiltinRule,
        BuiltinLint, noLint, BuiltinRun, RunChanged(..), RunResult(..),
        -- * Calling builtin rules
        apply, apply1,
        -- * User rules
        UserRule(..), addUserRule, getUserRules, userRuleMatch,
        -- * Lint integration
        trackUse, trackChange, trackAllow
        ) where

    import Development.Shake.Internal.Core.Types
    import Development.Shake.Internal.Core.Action
    import Development.Shake.Internal.Core.Run
    import Development.Shake.Internal.Core.Rules