From DOS — the trust substrate for agent fleets
Runs one judge-gated plan-class lifecycle tick: reads declared classes, transitions, and triggers, evaluates each trigger, spawns an advisory adjudicator, applies approved transitions as plan-meta edits, and logs the cycle. Use for automatic, fail-safe plan portfolio gardening.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dos-kernel:dos-class-cycleThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Garden the portfolio, but never alone.** A plan's class (active / done /
Garden the portfolio, but never alone. A plan's class (active / done / parked / …) should track reality — a done plan should not sit "active," a long-idle one should park.
/dos-class-cycleruns ONE tick of that gardening: it evaluates the declared triggers, asks a JUDGE-rung adjudicator (advisory, fail-to-abstain) to approve each candidate transition, applies only the gated ones, and logs the cycle. The class set, the legal transitions, and the failsafes are declared data ([lifecycle]) — a 2-class repo and a richly- classed one run the identical mechanism.
The shape: read the declared lifecycle → evaluate triggers → build candidates
(deterministic order) → judge each → enact gated transitions → log. The cycle
is domain-free mechanism; the taxonomy is [lifecycle] policy; the judge content
is a host dos.judges driver.
--dry-run (optional) — evaluate + judge but enact nothing (a preview cycle).dos doctor --workspace . --json
Read lifecycle — the declared classes, transitions (each {from, to, trigger, auto}), veto_class, max_transitions_per_cycle, and
per_plan_cooldown_hours — and paths (the plan + run dirs). Use these; never
hardcode a class name, a trigger, or a cap. A repo that declared only
active/done cycles with those two; a repo with a richer taxonomy declares more.
For each declared transition, evaluate its trigger against the portfolio (the
plan-meta classes, the run-archive history, git). A trigger that fires on a plan
proposes that plan for that from→to transition. Build the candidate list in a
DETERMINISTIC order (plan id ascending) so a replay is byte-stable.
Skip a plan that is:
veto_class (never auto-transitioned — a human moves it by hand), orper_plan_cooldown_hours (the per-plan cooldown), ormax_transitions_per_cycle candidates this tick (the cap).The trigger evaluator is the host's (an opaque trigger token like
all_phases_shipped / idle_30d — the kernel never interprets it). A natural
ground-truth trigger: a plan whose dos enumerate residual is empty AND every
unit dos verifys SHIPPED is a real all_phases_shipped → done candidate.
A class transition is a judgment call, so it goes to the JUDGE rung — a non-deterministic adjudicator that rules on the residue the deterministic checks left. Resolve the active judge by name and ask it to approve / defer each candidate:
dos judge-eval --judge <name> # the judge seam; built-in `abstain`, shipped `llm`, or a dos.judges plugin
The judge is hedged by the four disciplines (deterministic-first, advisory-only,
fail-to-abstain — a raise/bad-return becomes ABSTAIN, never APPROVE —
abstention-first). The judge content (the prompt) is a host dos.judges driver;
this skill spawns it via the seam and reads its verdict. An ABSTAIN defers the
transition to a human (the safe direction — the kernel never auto-applies on an
abstention).
For each candidate the judge APPROVED and whose declared transition has
auto = true, enact it: rewrite the plan-meta classification: to the to
class, ONE commit per cycle. Read the trunk + ship grammar from dos doctor --json's stamp; do not hardcode a commit prefix. A transition with
auto = false, or one the judge deferred/abstained on, is surfaced for a human —
never enacted.
Write a cycle record under paths.runs: the candidates, the judge verdicts, the
applied transitions, and the failsafe state (cap/cooldown/veto). A heartbeat row
every cycle — even one that applied nothing — so the gardener's history is
auditable.
[lifecycle]
data; this skill carries none. A transition naming an unknown class is a config
error the kernel raises at load, not a silent skip.dos.judges driver; the
skill resolves + spawns it, fail-to-abstain. Forcing the prompt generic would
re-couple the kernel.ACTIVE/PARK/TOMB or a trigger like idle_14d — read the
declared set from dos doctor --json's lifecycle.max_transitions_per_cycle in one tick — a runaway judge must not
churn the whole portfolio; the cap is the backstop.npx claudepluginhub anthony-chaudhary/dos-kernel --plugin dos-kernelCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.