Agent skill

Conduct

by jongwony in jongwony/epistemic-protocols

The work needs several lines of thinking, and their order, independence, combination, stopping point, or where results go is not obvious: settle the method before starting.

MITAuto-check passed

Install Conduct

skills CLI
$ npx skills add jongwony/epistemic-protocols --skill conduct -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jongwony/epistemic-protocols conduct --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jongwony/epistemic-protocols.git skills-src && mkdir -p .claude/skills && cp -r skills-src/hyphegesis/skills/conduct .claude/skills/conduct && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
conduct
GitHub stars
173
Token cost
~9.9k tokens
SKILL.md length
882 words
Files
3 (incl. references)
Skills in repo
29
Repo updated
First seen
Licence
MIT

At a glance

The work needs several lines of thinking, and their order, independence, combination, stopping point, or where results go is not obvious: settle the method before starting.

  • SKILL.md covers Definition, Mode Activation, Protocol and Rules, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Conduct is an agent skill from jongwony/epistemic-protocols. The work needs several lines of thinking, and their order, independence, combination, stopping point, or where results go is not obvious: settle the method before starting.

Its SKILL.md is about 9.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/decompose-recovery.md` and `references/round-composition.md`).

The repository describes itself as: Epistemic protocols for Claude Code — structure human-AI interaction quality at every decision point - https://epistemic-protocols.com. The licence is MIT.

Example prompts

  • “/conduct”

What it can do on your machine

Read from SKILL.md and the folder at commit 69bb95b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are lean).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Conduct loads about 9.9k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 45 tokens; SKILL.md has 882 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~45
When it runs · the whole SKILL.md, loaded when a task matches
~9.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~11k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jongwony/epistemic-protocols at commit 69bb95b, republished under its MIT licence (© jongwony). 882 words, ~9,890 tokens.

Download SKILL.mdSave it as .claude/skills/conduct/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
conduct
description
The work needs several lines of thinking, and their order, independence, combination, stopping point, or where results go is not obvious: settle the method before starting.

Hyphegesis Protocol

Conduct how a session's epistemic work will be carried out — the lines of work, their order, independence, combination, stopping point, and where their results go — when that method is underdetermined while the goal is clear. The morphism is design THEN hand off: Hyphegesis drafts the whole method as one map, the person recognizes or corrects it and keeps the coordinates only they can fill, and the method is handed off with what it carries; then Hyphegesis stops, and the substrate executes. Type: (MethodUnderdetermined, Hybrid, CONDUCT, WorkProspect) → ConductedMethod.

Definition

Hyphegesis (ὑφήγησις: a leading-the-way, guiding from just ahead): A dialogical act of conducting a session's epistemic work when the goal is clear but how to run it is not. The protocol's lexical verb is /conduct. Once it has run, the person can say: this work proceeds this way — these lines run in this order or side by side, they combine like this, they stop here, and their results go there; I recognize what I entrusted and what I kept, and I took this method as mine; what rests on me goes no further without me and comes back to me at the end, while the rest runs on. The whole map and its execution start as your judgment — which lines of work, how they relate, who runs each and where, and how precisely the map is worth drawing for the time it takes to reach the goal. The person keeps only what is theirs: when to stop, how lines combine, where results go, the constraints in force, and the authority they entrust with its limits, given as a broad direction. Every person turn is read again against the context as it now stands. The method is taken on the person's word, or relayed at the start where the person's own words already settle it; the turn that closes presents the map as a relay — after a taking, once more, with what that turn changed on its ledger — and hands it off in the same turn without waiting, carrying what that map showed: the person's coordinates, the deferred decisions, its lifetime, and the capabilities it needs; and the run ends there.

lean
/-!
How to read this block. It is core Lean 4 and elaborates as written, and you are the model it is
written for: you read it, and by inference over the context you settle each element it leaves
open. Every `axiom` is one of those judgments — a black box to the contract, yours to make from
the material in front of you; its doc comment says what you judge there, and nothing in this
block decides it for you. Every `def`, `inductive`, and `structure` is fixed by the contract.
-/

/-! ── FLOW ──
Hyphegesis(WP) → start(c) → conduct(c, utterances), where c is the fused session context:
  start: observe(c) — what the pointer's record returns and the loaded inventory enter the
    context → [the person's words already settle the method: relay] → the map, relayed →
    handoff | otherwise → the map → Stop
  next utterance u, fused into c:
    [the utterance does not bear on this run]          the session answers it; the gate holds
    [the person withdraws]                             → what stands and what is open; nothing handed off
  otherwise c' := observe(fuse(c, u)), every reading below taken afresh on c' →
    [the person takes the method]                      → the map, relayed → handoff, in the same turn → ConductedMethod
    [otherwise]                                        → the map again, drawn from c', with a ledger
  no utterance: the gate holds; nothing is taken
  after handoff: the run has ended; the substrate executes the method as the Rule "Handoff carries
    its obligations" names, and re-entry is as the Rule "Re-entry" says.
-/

/-! ── MORPHISM ──
WorkProspect
  → observe(pointer, inventory)   -- what the pointer's record returns and the loaded inventory enter the context first
  → draft(map)                    -- the whole method, your judgment, drawn only as precisely as reaching the goal is worth (focus)
  → place(substrate)              -- who runs each line, where, and whether the person is present: your inference, shown on the map
  → present(map)                  -- the map with your contrary grounds; after an answer, a ledger of what it changed
  → fuse(answer)                  -- the answer joins the context whole
  → stand                         -- a person's turn makes a coordinate stand, under the record rule (`StandingSupported`)
  → take                          -- the person takes the method, as shown or with what the same turn changes; before any map, their words may already settle it (relay)
  → handoff(ConductedMethod)      -- the map relayed in the closing turn, then the method with what it showed, without waiting; then stop
  → ConductedMethod
requires: method_underdetermined(WP)  -- declared by invoking /conduct; judged only on the AI-guided path
deficit:  MethodUnderdetermined       -- activation precondition (Layer 1/2)
preserves: WP                         -- the context only grows; the prospect is never rewritten
invariant: Conduction over Substrate  -- the method is designed and handed off; the substrate runs it
invariant: Focus never records        -- the map is re-read every turn; only the person's words move a value into the record
-/

namespace Hyphegesis


/-! ── GROUND ──
The session primitive this contract reads.
-/

inductive Origin | person | assistant | external | peer | injected | unknown
  deriving DecidableEq

/-- A turn is who sent it and what it says. What the turn does — a statement, a request, an
    instruction, a report of what was observed — is read from its content, never stored here. -/
structure Turn (P : Type) where
  origin  : Origin
  content : P

abbrev Context (P : Type) := List (Turn P)

/-- An origin that may ground: the harness says who sent a turn, and that is all this admits on.
    The assistant's own turns, injected text, and turns of unknown origin ground nothing. -/
def Grounding := {o : Origin // o ≠ .assistant ∧ o ≠ .injected ∧ o ≠ .unknown}

/-- Any turn a person sent, whatever it does. -/
def Utterance (P : Type) := {e : Turn P // e.origin = .person}
def Response (P : Type) := {e : Turn P // e.origin = .assistant}
/-- A turn from outside the conversation: what a tool or the environment returned, or a peer's
    report. A person's account of what they observed is an utterance, read as such. -/
def Evidence (P : Type) := {e : Turn P // e.origin = .external ∨ e.origin = .peer}

def fuse {P : Type} (c : Context P) (u : Utterance P) : Context P := c ++ [u.val]

/-- One turn of the context, with the origin it grounds on. -/
structure Cite {P : Type} (c : Context P) where
  idx : Nat
  lt  : idx < c.length
  src : Grounding
  ok  : (c[idx]'lt).origin = src.val

/-- `admits` reads only who sent the cited turn; `supports` is the model's reading of what that
    turn says, including what it does — a statement, a request, a report of an observation. -/
structure Coord (P A : Type) where
  admits   : Grounding → Prop
  supports : Context P → Turn P → A → Prop

/-- `open_` may carry a candidate citation whose support is still short. -/
inductive Occ {P A : Type} (q : Coord P A) (c : Context P)
  | open_  (candidate : Option (Cite c))
  | filled (a : A) (src : Cite c) (allowed : q.admits src.src)
      (supported : q.supports c (c[src.idx]'src.lt) a)

/-- The same turn, cited from a longer context; what it supports is judged again against the
    context that now stands. -/
def Cite.lift {P : Type} {c : Context P} (s : Cite c) (t : Context P) : Cite (c ++ t) :=
  { idx := s.idx
    lt := by have := s.lt; simp; omega
    src := s.src
    ok := by rw [List.getElem_append_left s.lt]; exact s.ok }

/-! ── TYPES ── -/

noncomputable section

variable {P : Type}

/-- `WP`, `WorkProspect`: the work or goal facing object-level cognition, its method not yet
    determined. Read from the context; an amendment the person makes is part of it. -/
abbrev WorkProspect (P : Type) := Context P

structure HandoffLocator where
  record  : String
  session : String

/-- `N`, `NavigationBlock`: the fixed cross-session shape — a pointer, never a copied record. -/
structure NavigationBlock where
  purposeFrame           : String
  canonicalLocator       : HandoffLocator
  dereferenceInstruction : String
  snapshotAnchor         : Option String
  groundingInstruction   : String

/-- **Your reading**: the navigation block the context supplies over the record the work was
    parked in, a sibling protocol's emitted block included; `none` otherwise. It is carried
    unchanged, and nothing it names is copied into this protocol's output. -/
axiom pointer : Context P → Option NavigationBlock

/-- **Your reading** while a pointer is held: follow the block's dereference instruction at its
    locator and run its grounding instruction; what the record returns enters the context as
    observation. Nothing when there is no pointer. A pointer that does not resolve, or a record that
    does not support a premise the method needs, is a finding the map shows, with what
    was tried; it closes nothing. -/
axiom groundPointer : Context P → List (Evidence P)

/-- **Your observation**: what the loaded environment returns when you read it for the method the
    map now holds — the agents, skills, sessions, and tools it actually answers with — before the
    presentation that shows it. -/
axiom inventory : Context P → List (Evidence P)

/-- What is observed enters the context before the presentation it informs. -/
def observe (c : Context P) : Context P :=
  let c₁ := c ++ (groundPointer c).map (·.val)
  c₁ ++ (inventory c₁).map (·.val)

/-- The method as the map shows it, in the map's own words. Its shape is yours; nothing here fixes
    one. -/
abbrev Method := String

/-- **Your draft**: the whole method, from the whole context, drawn again after every utterance so
    a change upstream re-fills what depends on it. What a method settles are open questions for
    you to answer from the work, never slots to fill: which lines of work there are and what each
    does; in what order they run or whether side by side; whether they see each other before their
    results combine; how separately produced results combine; when each stops; where each result
    goes; and what the method leaves uncovered. Draw the map only as precisely as reaching the
    goal is worth: where trying is cheap and can be undone, a coarse map run once and checked
    against its use may be the method, and more precision spends the time it was meant to save.
    Every line of work lands somewhere on the map — that the map is complete is your judgment, and
    the person checks it. A protocol the person declared next stands as a line of the method placed
    after the lines whose results it takes, recorded as their `constraint` coordinate — or, where it
    receives the end results, as their `destination`. A value the person set stays theirs on the
    reach their words gave it. -/
axiom draft : Context P → Method

/-- **Your inference**: who runs each line of work, where, and whether the person will be present
    while it runs — read from the tools the running harness describes and from the accumulated
    context, never from a fixed list, since another harness describes its tools differently. It is
    shown on the map as the draft's inference; the person points only the broad direction, and
    where their words fix part of it — a direction, whether they will be present — that part stands
    as their `constraint` coordinate and this inference follows it. That coordinate's reach is read
    again on the context as it now stands, like any of theirs, and this inference follows what it
    still reaches. A tool description is material for this proposal and for which observations to
    attempt; it grounds no verdict, grants nothing, and shows no act reachable. -/
axiom placement : Context P → String

/-- **Your reading**: what the method needs from its substrate to run as drawn — an act, a tool, a
    session, a record to write to where a result's destination is a later session. -/
axiom required : Context P → List String

/-- **Your judgment**: the cited observation shows whether the substrate can provide `k`. -/
axiom FeasibilitySupported : String → Context P → Turn P → Bool → Prop

/-- Whether a capability is there is read from an observation: a turn the environment returned.
    Text injected into the session, a tool description among it, grounds no verdict. -/
def feasibilityCoord (k : String) : Coord P Bool :=
  { admits := (·.val = .external), supports := FeasibilitySupported k }

/-- **Your reading** for `k`: filled with whether the substrate provides it, citing the
    observation; open where nothing observed it, and the map says it is unconfirmed. -/
axiom feasibility : (c : Context P) → (k : String) → Occ (feasibilityCoord (P := P) k) c

/-- The coordinates only the person fills. -/
inductive Held
  /-- when a line of work, or the whole method, stops -/
  | stop
  /-- how the lines' results are combined -/
  | combine
  /-- where a result goes beyond the method -/
  | destination
  /-- a constraint in force on the work — a direction the person gave for the substrate, whether
      they will be present, or a horizon among it -/
  | constraint
  /-- the authority the person entrusts and its limits, given as a broad direction -/
  | grant

/-- One coordinate the person holds: its kind, and its reach — what it settles and the line or
    lines it binds, or the whole method, in the map's words. Two decisions of one kind on the same
    lines are two coordinates. -/
structure Coordinate where
  kind  : Held
  reach : String

/-- **Your judgment**, the live inventory of the person's coordinates: every coordinate the method
    turns on that this run has raised and the person's words have not since retired, read over the
    whole fused context — the map, every answer, and what the person said outside the map: a
    grant, a direction for the substrate, whether they will be present, a horizon. A value the
    draft fills for a kind the person holds raises that coordinate, so it is recorded or left open,
    never carried out as settled. -/
axiom coordinates : Context P → List Coordinate

/-- Who first put a value forward: you, or the person. -/
inductive Proposer | draft | person

/-- What the turn that made a value stand did: gave it in its own words, took a value put forward
    before, or gave a grant that reaches your choice. -/
inductive Standing | set | adopted | granted

/-- What stands on a coordinate: the value, in the words of the turn that set it or of the
    proposal as it was shown, who first put it forward, and how it came to stand. -/
structure Determination where
  value    : String
  proposer : Proposer
  standing : Standing

/-- **Your judgment**, the record rule: the cited turn makes coordinate `x` stand as `d`, read
    against the context as it now stands, on the reach the turn's words give it. The proposer is
    whoever first put the value forward in the context; the standing is what the cited turn itself
    did: gave the value in its own words (`set`), took a value put forward before (`adopted`) —
    where you put it forward, only if it was shown on a map before this turn — or gave a grant
    whose words reach your choice (`granted`). A grant never reaches the authority coordinate
    itself: the authority and its limits stand only as the person set or adopted them. Whether an
    act falls inside a grant is read the same way, and the Rule "Person's coordinates" says where
    the person sees one that does not. A question, a deferral, or a bare mention makes nothing
    stand. -/
axiom StandingSupported : Coordinate → Context P → Turn P → Determination → Prop

/-- Only a person's turn makes a value stand on a coordinate the person holds, and no grant makes
    a value stand on the grant coordinate itself. -/
def heldCoord (x : Coordinate) : Coord P Determination :=
  { admits := (·.val = .person),
    supports := fun c t d => StandingSupported x c t d ∧ (d.standing = .granted → x.kind ≠ .grant) }

/-- **Your reading**: how coordinate `x` stands in `c` — filled by the person's latest turn that
    makes it stand; open where none does. A value a person's turn made stand changes only by their
    later words, or returns open past the lifetime their words or the map they took gave it; a
    value standing under their grant (`granted`) changes only within that grant's reach, and the
    ledger flags the change as it flags a taken value. A map that left whether their decision still
    reaches a coordinate unclear leaves that coordinate open, never adopted. -/
axiom operative : (c : Context P) → (x : Coordinate) → Occ (heldCoord (P := P) x) c

def isFilled {A : Type} {q : Coord P A} {c : Context P} : Occ q c → Bool
  | .open_ _   => false
  | .filled .. => true

/-- One recorded value: the coordinate, what stands on it, and the person's turn it stands on,
    with that turn's support. -/
structure Recorded (c : Context P) where
  coord        : Coordinate
  det          : Determination
  src          : Cite c
  byPerson     : src.src.val = .person
  supported    : StandingSupported coord c (c[src.idx]'src.lt) det
  notSelfGrant : det.standing = .granted → coord.kind ≠ .grant

def recordOf {c : Context P} (x : Coordinate) :
    Occ (heldCoord (P := P) x) c → List (Recorded c)
  | .open_ _                      => []
  | .filled d s allowed supported => [⟨x, d, s, allowed, supported.1, supported.2⟩]

/-- The record: every filled occurrence over the live inventory. A proposal of yours the person
    has not taken lives only in the map. -/
def record (c : Context P) : List (Recorded c) :=
  (coordinates c).flatMap (fun x => recordOf x (operative c x))

/-- What is still open: every live coordinate whose occurrence is open. None closes by default. -/
def residual (c : Context P) : List Coordinate :=
  (coordinates c).filter (fun x => !isFilled (operative c x))

/-- A decision or a supply the method leaves open, where it binds, and whether it returns to the
    person; one that does not names in `what` the recorded grant whose reach covers it. -/
structure Deferred where
  what     : String
  binds    : String
  toPerson : Bool

/-- **Your reading**: what the method leaves open, each read along two questions that may both hold:
    does its deciding evidence arrive only later, and can only the person supply or settle it? One
    whose evidence arrives later is decided by the substrate only where a recorded grant's reach
    covers it, shown on the map as covered by that grant; where the grant is open or its reach
    unclear, and wherever only the person can supply or settle it, it returns to them (`toPerson`) —
    a secret or credential to set, a runtime error the substrate cannot resolve, a deployment handed
    to runtime, a fusion whose shape only the person can choose. -/
axiom deferred : Context P → List Deferred

/-- **Your reading**: how long the method's grants and readings hold — following a horizon the
    person gave, which stands as their `constraint` coordinate, and your reading of the work
    otherwise; past it, what rested on them returns open, as `operative` reads it. -/
axiom lifetime : Context P → String

/-- **Your record**: the contrary grounds you hold at the closure — a value you would set otherwise,
    the draft's weakest assumption, a line you doubt, that the work may need no conducting, a
    capability you expect the substrate cannot provide, a pointer that did not resolve — shown on
    the map, or in a withdrawal's record, and attached to the closure; empty when there are
    none. -/
axiom dissent : Context P → List String

/-- **Your judgment**: the cited turn takes the method as the map showed it, read against the
    context as it now stands; whatever the same turn settles or changes is read with it, and is
    carried on the relayed map's ledger rather than drawn into a map that waits. A turn before the latest
    map, or from an earlier run, takes nothing on it. Your own reading that the method is ready
    closes nothing. -/
axiom ResolutionSupported : Context P → Turn P → Unit → Prop

/-- Only the person takes the method. -/
def resolutionCoord : Coord P Unit :=
  { admits := (·.val = .person), supports := ResolutionSupported }

/-- **Your reading**: the person's taking of the method; `open_` until one reaches it. -/
axiom resolution : (c : Context P) → Occ (resolutionCoord (P := P)) c

/-- **Your judgment**, read only where the run opens, before any map: the person's own words, read
    against the context as it now stands, already settle every person-held judgment the method needs
    — what deferred decisions remain is said explicitly, and where they give a grant, its horizon —
    so no value of yours on a coordinate the person holds would be taken unseen. Your contrary
    grounds do not hold it back — they ride the relayed map. The placement, the lifetime past what
    the person fixed, and what the method needs are your inference, not among these: the relayed
    map shows them, each need observed or unconfirmed. Words from an earlier run settle nothing
    here, and a run you opened does not relay: nothing said before its first map settles it. Once a
    map has been shown, words that settle the method are a taking. Your reading that the work needs
    no conducting settles nothing here: it is a contrary ground like any other. -/
axiom RelaySupported : Context P → Turn P → Unit → Prop

/-- Only the person's words settle a method without a map. -/
def relayCoord : Coord P Unit :=
  { admits := (·.val = .person), supports := RelaySupported }

/-- **Your reading**: the person's words that settle the method; `open_` until they do. -/
axiom relay : (c : Context P) → Occ (relayCoord (P := P)) c

/-- **Your judgment**: the cited turn withdraws — the person stops here without taking a method —
    read against the context as it now stands. A turn before the latest map, or from an earlier
    run, withdraws nothing from this one, and your own reading that the run should end closes
    nothing. -/
axiom WithdrawalSupported : Context P → Turn P → Unit → Prop

/-- Only the person withdraws. -/
def withdrawalCoord : Coord P Unit :=
  { admits := (·.val = .person), supports := WithdrawalSupported }

/-- **Your reading**: the person's withdrawal; `open_` until one reaches it. -/
axiom withdrawal : (c : Context P) → Occ (withdrawalCoord (P := P)) c

/-- **Your judgment**: the latest utterance bears on this run — an answer to the map, a value, a
    grant, a direction, a question about the map, a withdrawal, a taking. An utterance about other
    work leaves the run as it stands: the session answers it, that answer stays in the context, and
    no gate of this run is raised. -/
axiom Reaches : Context P → Prop

/-- The record a withdrawal carries: the context, what stands with who proposed each value and
    how it stood, what is still open, the deferred decisions, and the dissent. Nothing in it is
    handed off, and the draft does not become the next move. -/
structure Closed (P : Type) where
  context  : Context P
  record   : List (Recorded context)
  residual : List Coordinate
  deferred : List Deferred
  dissent  : List String

def closed (c : Context P) : Closed P :=
  { context := c, record := record c, residual := residual c, deferred := deferred c,
    dissent := dissent c }

/-- **Your record**: the navigation block over the record where the person's turns behind this
    run's recorded values and grants can be read — the session record, or the record the run
    writes to — produced by this run; `none` where no record outside this session can be
    addressed. -/
axiom source : Context P → Option NavigationBlock

/-- `ConductedMethod`: the method handed off and what it carries — each field as the relayed map
    showed it, `source` aside, which its producer supplies; the substrate reads what is uncertain against this record. `plan` is the method
    as the map the closing turn answered showed it, with what changed since that map, as the relayed
    map showed it — on a relay, the person's words for what they settled and your draft for the
    rest — and where its text and a recorded value differ, the recorded value governs. The substrate
    executes it as the Rule "Handoff carries its obligations" names. Independent lines are handed
    off so they do not see each other's results before those results combine. Every navigation block
    this method leaves for a reader outside this session — `source`, and the one over the record a
    later-session result is written to — is supplied by its producer from that record's own
    identity, source session, and purpose; its grounding instruction directs the recipient to run
    `/inquire` or equivalent grounding over the record and its cited sources, recover the retained
    and entrusted judgments from the governing utterances, and keep an unsupported decision open
    while independent work may continue. `pointer` is the incoming block, carried unchanged.
    `required` names what the substrate must provide; naming it is not evidence that it is there,
    which `feasibility` reads. `c` is the session context its citations resolve in, and is not part
    of what the handoff dispatches; `source` is how a substrate outside it reaches what they cite.
    -/
structure ConductedMethod (P : Type) (c : Context P) where
  plan        : Method
  placement   : String
  record      : List (Recorded c)
  residual    : List Coordinate
  deferred    : List Deferred
  required    : List String
  feasibility : (k : String) → Occ (feasibilityCoord (P := P) k) c
  lifetime    : String
  pointer     : Option NavigationBlock
  source      : Option NavigationBlock
  dissent     : List String

/-- The method the closing turn took, with everything it carries, read on the same context the
    relayed map is drawn from. -/
def emitted (c : Context P) : ConductedMethod P c :=
  { plan        := draft c
    placement   := placement c
    record      := record c
    residual    := residual c
    deferred    := deferred c
    required    := required c
    feasibility := feasibility c
    lifetime    := lifetime c
    pointer     := pointer c
    source      := source c
    dissent     := dissent c }

/-- `conducted c map`: the person took the method shown in `c`; `relayed c map`: at the run's
    start, the person's words in `c` already settled it. `map` is the map relayed before the
    dispatch in the same turn, and the method handed off is `emitted c`, carrying what that map
    showed. -/
inductive Outcome (P : Type)
  | conducted (c : Context P) (map : Response P)
  | relayed   (c : Context P) (map : Response P)
  /-- the partial record; nothing is handed off -/
  | withdrawn (r : Closed P)
  | holding   (c : Context P)

/-! ── WP-BINDING ──
bind(WP) = explicit_arg ∪ colocated_expr ∪ prev_user_turn ∪ ai_identified_prospect
Priority: explicit_arg > colocated_expr > prev_user_turn > ai_identified_prospect
  /conduct "text"              → WP = "text"
  /conduct (alone)             → WP = the work prospect under discussion
  "how should I approach..."   → WP = the work named before the trigger
  AI-detected trigger          → WP = the multi-move prospect AI identified (Hybrid: the person
                                 reads it as the map's first line and corrects it there)
`pointer` is read alongside WP: a navigation block the context holds, a sibling protocol's
emitted block included. A prospect is what someone states; a pointer is what the session holds.
-/

/-! ── MODE STATE ──
Λ is the fused context and nothing else; every reading above is taken from it.
-/

abbrev Mode (P : Type) := Context P

/-! ── PHASE TRANSITIONS ──
A step is one arm of a structural recursion over the person's utterances. Each utterance is
fused; one that bears on the run and does not withdraw is then observed (`.groundPointer`,
`.inventory`): what the pointer's record returns and the loaded inventory enter the context before
the presentation they inform, and an utterance about other work, or a withdrawal, triggers no
reading. `respond` is the next map (`.map`, then `.mapGate`), or, when the run closes on a taking
— or, at `start`, on a relay — the map relayed before `emitted` is handed off in the same turn
(`.relay`, then `.handoff`); a taking closes whatever the same turn changed, which the relayed
map's ledger shows; a withdrawal is reported by `.withdraw`
and hands nothing off; `session` is the session's own answer to an utterance about other work,
which stays in the context without being a gate of this run.
-/

open Classical in
def conduct (respond session : Context P → Response P) :
    Context P → List (Utterance P) → Outcome P
  | c, []      => .holding c
  | c, u :: us =>
    let c₀ := fuse c u
    if ¬ Reaches c₀ then conduct respond session (c₀ ++ [(session c₀).val]) us
    else if isFilled (withdrawal c₀) = true then .withdrawn (closed c₀)
    else
      let c' := observe c₀
      if isFilled (resolution c') = true then .conducted c' (respond c')
      else conduct respond session (c' ++ [(respond c').val]) us

/-- The run opens on its first map, unless the person's words already settle the method. -/
def start (respond session : Context P → Response P) (c : Context P)
    (us : List (Utterance P)) : Outcome P :=
  let c₁ := observe c
  if isFilled (relay c₁) = true then .relayed c₁ (respond c₁)
  else conduct respond session (c₁ ++ [(respond c₁).val]) us

/-! ── LOOP ──
Every map re-reads the whole context; nothing counts rounds, and no earlier answer is held apart
from what later ones say. Each map is what `.map` names. No round cap: each map is dialogue.
After a handoff, re-entry is as the Rule "Re-entry" says.
-/

/-! ── CONVERGENCE ──
conducted(WP): the method handed off on the person's taking, or relayed at the start on their words.
The convergence evidence is the map as it will be handed off, read on the context as it now stands
and presented once more as a relay in the closing turn — with the change ledger since the map the
person answered, where there was one, and any tally derived from the rows actually shown — then the
handoff in the same turn without waiting; the handoff carries what that map showed. Withdrawal
keeps its partial record and hands nothing off. Demonstrated, not asserted.
-/

/-! ── TOOL GROUNDING ──
What each operation of this contract does. An interaction with the person is one of two kinds,
and its kind fixes how it continues once its text is presented.
-/

inductive Interaction | constitution | extension

inductive Continuation | stop | proceed

inductive Annot | sense | observe | track | transform | dispatch | interaction (kind : Interaction)

/-- Every interaction presents its text; a Constitution then stops for the person's turn, and an
    Extension proceeds. -/
def Interaction.realization : Interaction → Continuation
  | .constitution => .stop
  | .extension    => .proceed

inductive Op | groundPointer | inventory | readAnswer | draft | place | map | mapGate | withdraw
             | relay | converge | handoff

def grounding : Op → Annot × String
  | .groundPointer => (.observe, "record read, artifact read: while the context holds a navigation block, follow its dereference instruction at its locator — the record it names, within the session it names — and run its grounding instruction; what the record returns enters the context before the presentation it informs, and nothing read here is copied onto the method; a pointer that does not resolve is named on the map with what was tried")
  | .inventory     => (.observe, "artifact read, environment run: what the loaded environment actually answers with — its agents, skills, sessions, and tools — observed for what the method needs, before the presentation that shows it")
  | .readAnswer    => (.sense, "Internal analysis: whether the latest utterance bears on this run, and what it does there — the coordinates it makes stand, a grant or a direction given outside the map, a taking, a withdrawal — read whole against the fused context as it now stands, whatever form it takes")
  | .draft         => (.sense, "Internal analysis: the whole method drafted from the context, as precisely as reaching the goal is worth — the lines of work and how they order, see each other, combine, stop, and where their results go — around every value the person set, with the deferred decisions, what the method needs, and its lifetime")
  | .place         => (.sense, "Internal analysis: who runs each line, where, and whether the person will be present, inferred from the tools the running harness describes and the accumulated context, bounded by any direction the person gave")
  | .map           => (.interaction .extension, "the whole map on one sheet, which is the full state taking it as is would take: the lines of work as a graph the host can render, each line a node with its id and short everyday name in place, order and joins as its edges — an indented outline naming what each line follows only where no graph renders — each line's id and its order in the graph's source held from turn to turn, the drawn layout being the renderer's, so the change ledger is what lets the person check a change; what the method leaves uncovered; the substrate placement marked as your inference, following any direction or presence the person fixed; what the method needs, each observed or unconfirmed, and each act it needs that falls outside the grant or whose place inside it is unclear; the lifetime of its grants and readings, the draft's, following any horizon the person gave; the deferred decisions, each marked as returning to the person or as covered by the recorded grant it names; where the person will not be present, the authority the method would need, presented before they leave, with what must be decided before they leave set apart from what can come back at the end; your contrary grounds; after an answer, the change ledger — the person's edits first, then each value re-filled because of them, then what changed for any other reason — a new observation, your own re-draft — a removed line or replaced value kept with what it was, a value the person took before, or a granted value, that a change now alters flagged, and a person's value whose reach a change left unclear named with what it may reach and left open")
  | .mapGate       => (.interaction .constitution, "what the map got wrong, anywhere on it — or take the method, as shown or with what the same words change; silence holds and takes nothing")
  | .withdraw      => (.interaction .extension, "at the person's word: what you took as withdrawn, and the partial record — the values that stand with who proposed each and how it stood, what is open, the deferred decisions, and your contrary grounds; nothing is handed off")
  | .relay | .converge => (.interaction .extension, "the map, presented as a relay where the person's words settle the method — at the start, or by a taking — before the dispatch in the same turn")
  | .handoff       => (.dispatch, "delegate: after the relayed map, in the same turn, the ConductedMethod handed to the substrate, which executes it; the record an incoming pointer names stays where its locator names; then this run ends")

/-- The operation an outcome hands off through: a conducted or relayed run hands `emitted` to the
    substrate by `.handoff`, after the relayed map; a withdrawal or a holding hands nothing off. -/
def handedOffBy : Outcome P → Option Op
  | .conducted _ _ => some .handoff
  | .relayed _ _   => some .handoff
  | _              => none

/-! ── COMPOSITION ──
*: product — (D₁ × D₂) → (R₁ × R₂). Dimension resolution emergent via session context.
-/

end

end Hyphegesis

Mode Activation

/conduct is directly invocable: the invocation declares the deficit, and the first map shows the method as drafted — the person may take it at once — unless the invocation's own words already settle it as RelaySupported reads them, where it relays. AI-guided activation requires work with several lines of thinking whose order, independence, combination, stopping point, or destination is not obvious; scale and budget alone do not warrant it. Conduct the method before beginning its object-level work, while retaining loaded safety boundaries, capability restrictions, and explicit user instructions.

When /ground reads an abstraction against its own instances and summarizes that reading as a split into rival groups — a summary of its reading, not a verdict it computes — read references/decompose-recovery.md before conducting the per-group work.

Protocol

User-facing realization

The map's first line says what the work is for and what it hands off. Prior-session recall indices may seed the lines but never settle them. Keep labels short, since display width is not character count and a column padded by counting characters breaks.

Show full SKILL.md (350 more words)Show less

Rules

  • Conduction warrant: Hyphegesis never conducts itself.
  • Round composition: Use everyday language, place each judgment beside its evidence and next-move implication, and keep analytical context before the gate. Read references/round-composition.md when terminology or wording must persist, content belongs to another turn, or placement relative to the gate is in question.
  • Person's coordinates: Read the authority the person entrusts as a broad direction; where an act falls outside it or its place inside it is unclear, the person sees it as a contrary ground before the handoff, on the map; after the handoff, it comes back as the Rule "Handoff carries its obligations" names.
  • Handoff carries its obligations: The substrate runs what does not rest on the person without waiting for them and, when the method has run, returns to them once with every line's results; what rests on the person — a step that cannot be undone, where a contrary ground the relayed map carried, or one execution brings evidence for, bears on it, among them — comes back in that return with what did not proceed because of it, and nothing is decided for them.
  • Re-entry: After a handoff, a later utterance that changes the method's direction opens a new run over the accumulated context, where what stood is read again, and that run's plan names the method it replaces; stopping what still runs is the substrate's. A question about status reopens nothing; an answer to what came back goes to it. A withdrawn run is not reopened this way: a person who wants it again invokes /conduct, and the draft is drawn from the accumulated context.
  • Form feedback: Derive each round's density from the current request and carry an explicit form instruction until countermanded. Change the form directly; preserve content, wording, order, cadence, and turn boundaries fixed elsewhere, stating what changed and any overlapping constraint that remains.

Adversarial Guards

  • object-control-conflation: Decompose transforms abstractions; the conduct method owns its ordering, focus, lifetime, state, and recursion.
  • cross-span-absorption: A result crossing into a later session declares its record and externalization only; portability auditing and the later session's cognition stay with the receiving session.

© jongwony, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in hyphegesis/skills/conduct of jongwony/epistemic-protocols.

  • SKILL.md
  • references/decompose-recovery.md
  • references/round-composition.md

Open the folder on GitHubat commit 69bb95b

Compare with similar skills

Conduct next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Conduct compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Conduct this skilljongwony/epistemic-protocols173—~9.9kAutomated safety check: PassMIT
Thinking Second Ordertjboudreaux/cc-thinking-skills1.6k—~747Automated safety check: PassMIT
CSS Orderthedaviddias/Front-End-Checklist74k—~404Automated safety check: PassMIT
Focus Orderthedaviddias/Front-End-Checklist74k—~519Automated safety check: PassMIT
Heading Orderthedaviddias/Front-End-Checklist74k—~452Automated safety check: PassMIT
Food Orderingasgeirtj/system_prompts_leaks69k—~1.4kAutomated safety check: PassCC0-1.0

Similar skills

  • Thinking Second Order

    tjboudreaux/cc-thinking-skills

    When a change has effects past the immediate fix—incentives, scale, feedback—trace consequence chains with timing and probability before committing.

    1.6k GitHub stars~747 tokensUpdated 2 mo ago
    Auto-check passed
  • CSS Order

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing stylesheets, component styles, and responsive behavior related to Order CSS files correctly.

    74k GitHub stars~404 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Focus Order

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Ensure logical focus order.

    74k GitHub stars~519 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Heading Order

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Maintain logical heading order.

    74k GitHub stars~452 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Food Ordering

    asgeirtj/system_prompts_leaks

    Prepare restaurant food orders for delivery or pickup; use for cart, checkout and tracking.

    69k GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Code Of Conduct

    sickn33/agentic-awesome-skills

    Build a human-reviewed conduct register after context-first intake.

    47k GitHub starsUsed in 1 repo~6.7k tokens
    Legal & ComplianceAuto-check passed

More from jongwony/epistemic-protocols

All 29 skills in this repo
  • Outcome

    jongwony/epistemic-protocols

    This skill should be used when the user asks to "run the outcome eval", "paired bare vs protocol", "which decisions did the protocol surface", "count what the AI asked or presented", "does /inquire…

    173 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check: notes
  • Realize

    jongwony/epistemic-protocols

    This skill should be used when the user asks to "run the eval", "test whether the protocol actually works at runtime", "check type realization", "measure protocol fulfillment", "run the…

    173 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check: notes
  • Verify

    jongwony/epistemic-protocols

    This skill should be used when the user asks to "verify protocols", "check consistency before commit", "validate definitions", "run pre-commit checks", "verify soundness", or wants to ensure…

    173 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Encapsulation

    jongwony/epistemic-protocols

    This skill should be used when the user asks to "audit plugin encapsulation", "check self-containment semantics", "find contributor-knowledge assumptions", or invokes /encapsulation.

    173 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Formal Review

    jongwony/epistemic-protocols

    This skill should be used when the user asks to "formal review", "formal lens review", or invokes /formal-review.

    173 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check: notes
  • Recollect

    jongwony/epistemic-protocols

    The user vaguely recalls something discussed before but cannot name it — one session, or a line of work, topic, or settled concept across several: find it in past records to recognize.

    173 GitHub stars~8.7k tokensUpdated yesterday
    Auto-check passed

Questions about Conduct

What does Conduct do?

The work needs several lines of thinking, and their order, independence, combination, stopping point, or where results go is not obvious: settle the method before starting. Conduct is an agent skill from jongwony/epistemic-protocols. The work needs several lines of thinking, and their order, independence, combination, stopping point, or where results go is not obvious: settle the method before starting.

How do I install Conduct in Claude Code?

Run `npx skills add jongwony/epistemic-protocols --skill conduct -a claude-code`. Or copy the skill folder (hyphegesis/skills/conduct in jongwony/epistemic-protocols) into .claude/skills/conduct in your project. Claude Code loads it when a task matches its description.

How do I install Conduct in Codex?

Run `npx skills add jongwony/epistemic-protocols --skill conduct -a codex`. Or copy the skill folder (hyphegesis/skills/conduct in jongwony/epistemic-protocols) into .agents/skills/conduct in your project. Codex loads it when a task matches its description.

Can I use Conduct in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jongwony/epistemic-protocols --skill conduct -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/conduct, .gemini/skills/conduct, .github/skills/conduct and .opencode/skills/conduct in your project.

What does Conduct need to run?

SKILL.md names no scripts, command-line tools or credentials: Conduct is instructions for the agent only.

Does Conduct access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Conduct safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Conduct use?

Conduct is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Conduct use?

About 9.9k tokens (SKILL.md is roughly 40k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.2k tokens, read only when the agent opens those files.

What are the alternatives to Conduct?

Skills that share tags, products or a category with Conduct: Thinking Second Order (tjboudreaux/cc-thinking-skills, 1.6k stars), CSS Order (thedaviddias/Front-End-Checklist, 74k stars), Focus Order (thedaviddias/Front-End-Checklist, 74k stars) and Heading Order (thedaviddias/Front-End-Checklist, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Conduct?

jongwony (a GitHub user) maintains it in jongwony/epistemic-protocols, which has 173 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 6, 2026.

Source: jongwony/epistemic-protocols on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.