Files
passepartout/skills/org-skill-diagnostics.org

68 lines
2.2 KiB
Org Mode

#+TITLE: SKILL: Diagnostics (org-skill-diagnostics.org)
#+AUTHOR: Agent
#+FILETAGS: :system:diagnostics:doctor:
#+PROPERTY: header-args:lisp :tangle org-skill-diagnostics.lisp
* Overview
The *Diagnostics Skill* (Doctor) provides system-wide health checks and dependency verification.
* Implementation
** Package Context
#+begin_src lisp
(in-package :opencortex)
#+end_src
** Dependency Check (doctor-check-dependencies)
#+begin_src lisp
(defun doctor-check-dependencies ()
"Verifies that all required external binaries are available."
(let ((deps '("sbcl" "emacs" "git" "curl" "nc)
(all-ok t))
(format t "DOCTOR: Checking System Dependencies...~%
(dolist (dep deps)
(if (uiop:run-program (list "which" dep) :ignore-error-status t)
(format t " [OK] Found ~a~%" dep)
(progn
(format t " [FAIL] Missing ~a~%" dep)
(setf all-ok nil))))
all-ok))
#+end_src
** XDG Check (doctor-check-xdg)
#+begin_src lisp
(defun doctor-check-xdg ()
"Verifies XDG environment variables and directory structure."
(format t "DOCTOR: Checking XDG environment...~%
(let ((vars '("OC_CONFIG_DIR" "OC_DATA_DIR" "OC_STATE_DIR" "MEMEX_DIR))
(dolist (var vars)
(let ((val (uiop:getenv var)))
(if val
(format t " [OK] ~a: ~a~%" var val)
(format t " [WARN] ~a is not set.~%" var)))))
t)
#+end_src
** Main Diagnostic (doctor-main)
#+begin_src lisp
(defun doctor-main ()
"Runs all diagnostic checks."
(format t "==================================================~%
(format t " OpenCortex System Diagnostic~%
(format t "==================================================~%
(let ((d-ok (doctor-check-dependencies))
(x-ok (doctor-check-xdg)))
(format t "==================================================~%
(if (and d-ok x-ok)
(format t " ✓ SYSTEM HEALTHY: Ready for ignition.~%
(format t " SYSTEM UNHEALTHY: Issues detected.~%)))
#+end_src
** Skill Registration
#+begin_src lisp
(defskill :skill-diagnostics
:priority 100
:trigger (lambda (ctx) (eq (getf (getf ctx :payload) :sensor) :heartbeat))
:deterministic (lambda (action ctx) (declare (ignore action ctx)) nil))
#+end_src