I don't write much scheme either but hopefully this will help get you started.
(define (script-fu-red-eye image drawable feather-radius)
(if (= (car (gimp-selection-is-empty image)) TRUE)
(gimp-message "No active selection. Please make a selection and try again.")
(begin
(gimp-image-undo-group-start image)
(gimp-selection-feather image feather-radius)
; What hue-range do you want?
; HUE-RANGE-ALL (0)
; HUE-RANGE-RED (1)
; HUE-RANGE-YELLOW (2)
; HUE-RANGE-GREEN (3)
; HUE-RANGE-CYAN (4)
; HUE-RANGE-BLUE (5)
; HUE-RANGE-MAGENTA (6)
(gimp-drawable-hue-saturation drawable HUE-RANGE-ALL 30 0.5 0.7 0.2)
(gimp-image-undo-group-end image)
(gimp-displays-flush)))
)
(script-fu-register
"script-fu-red-eye" ; Name
"Red Eye" ; Menu label
"Feathers the current selection and changes hue/saturation" ; Description
"Peter Freeth" ; Author
"Peter Freeth" ; Copyright
"Feb 2024" ; Date
"RGB*" ; Types
SF-IMAGE "Input image" 0
SF-DRAWABLE "Input drawable" 0
SF-ADJUSTMENT "Feather Radius" (list 10 1 100 1 10 0 SF-SPINNER)
; SF-ADJUSTMENT "Feather Radius" '(10 1 100 1 10 0 0)
)
; SF-ADJUSTMENT "Label" '(initial-value lower-limit upper-limit step-increment page-increment digits type)
; step-increment Increment when using the up and down arrows.
; page-increment Increment when using page up and page down. Keys Fn and Pg Up or Pg Dn.
; digits Digits after the point (decimal part).
; type One of: SF-SLIDER or 0, SF-SPINNER or 1.
;
; To define a list composed of literals or previously declared variables, use the list function:
; (list 5 4 3 a b c)
;
; After changing the script remember to do Filters -> Script-Fu -> Refresh Scripts.
(script-fu-menu-register "script-fu-red-eye" "<Image>/Filters/")