feat(skills): add active-listening, dialectic, triage, and robot
- active-listening: gather every requirement before acting; ask until nothing needed is open, then reflect back. - dialectic: thesis / adversarial antithesis / synthesis looped to a ~99% thesis, deep-inspecting every accessible source; calls active-listening. - triage: drive a failing pipeline to green by applying dialectic to every failing job independently. - robot: autonomous-execution contract - no questions once the goal is clear, never stop before it is reached, only cleared (non-denied/non-ask) commands. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
38
skills/active-listening/SKILL.md
Normal file
38
skills/active-listening/SKILL.md
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
name: active-listening
|
||||||
|
description: >
|
||||||
|
Gather every requirement before acting. Trigger at the start of any task
|
||||||
|
whose scope, constraints, or success criteria are not fully pinned down, and
|
||||||
|
whenever another skill needs an operator-only fact — ask focused questions
|
||||||
|
until nothing needed is still open, then reflect the understanding back.
|
||||||
|
Portable across projects.
|
||||||
|
---
|
||||||
|
|
||||||
|
Do not act on a half-understood request. Listen actively until you could state
|
||||||
|
the task, its constraints, and its definition of done without guessing.
|
||||||
|
|
||||||
|
## Procedure
|
||||||
|
|
||||||
|
1. **Surface the unknowns.** List every open question the task leaves: ambiguous
|
||||||
|
scope, unstated constraints, success criteria, edge cases, which files or
|
||||||
|
systems are in play, what "done" means, and any decision only the operator
|
||||||
|
can make.
|
||||||
|
2. **Derive what you can first.** Remove from that list every question you can
|
||||||
|
answer yourself from the code, the logs, the git history, or a sensible
|
||||||
|
default. Active listening is not offloading your own investigation onto the
|
||||||
|
operator.
|
||||||
|
3. **Ask, focused.** Put the genuinely-open questions to the operator — grouped,
|
||||||
|
concrete, answerable, with a recommended default where one exists. Prefer a
|
||||||
|
few high-leverage questions over a long interrogation. Use the host's
|
||||||
|
structured question mechanism when one exists.
|
||||||
|
4. **Listen and integrate.** Fold each answer in. A new answer often opens a new
|
||||||
|
question — keep going.
|
||||||
|
5. **Loop until closed.** Repeat until no needed information is still open.
|
||||||
|
6. **Reflect back.** Restate the task, its constraints, and its definition of
|
||||||
|
done in your own words for a final confirmation before acting.
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
- Never invent an answer to an open question to avoid asking.
|
||||||
|
- Never ask what you can determine yourself.
|
||||||
|
- One genuinely-blocking unknown is enough reason to ask; do not proceed past it.
|
||||||
52
skills/dialectic/SKILL.md
Normal file
52
skills/dialectic/SKILL.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
name: dialectic
|
||||||
|
description: >
|
||||||
|
Reach a defensible conclusion through a dialectical process — thesis,
|
||||||
|
adversarial antithesis, synthesis — iterated until one thesis survives every
|
||||||
|
attack at ~99% confidence. Trigger for any consequential root-cause, design,
|
||||||
|
or decision where being wrong is expensive and the answer is not yet certain.
|
||||||
|
Deep-inspects every accessible source. Portable across projects.
|
||||||
|
---
|
||||||
|
|
||||||
|
Reach the truth by dialectic, not by first guess. Do not stop at a plausible
|
||||||
|
answer; drive the loop until a thesis survives every attack at ~99% confidence.
|
||||||
|
|
||||||
|
## Before you start: listen
|
||||||
|
|
||||||
|
Invoke the `active-listening` skill first. Do not begin the dialectic until you
|
||||||
|
have gathered every requirement, constraint, and success criterion the task
|
||||||
|
needs. A dialectic run on the wrong question wastes the whole loop. Return to
|
||||||
|
`active-listening` mid-loop whenever an objection turns on a fact only the
|
||||||
|
operator holds.
|
||||||
|
|
||||||
|
## The loop
|
||||||
|
|
||||||
|
1. **Thesis.** Form the strongest initial claim you can, grounded in evidence,
|
||||||
|
not assumption. Deep-inspect every source you can reach: the source code and
|
||||||
|
git history; the running containers (exec, logs, inspect through whatever
|
||||||
|
make or CLI helpers the project exposes); CI logs and artifacts; tests; docs.
|
||||||
|
Cite `file:line` and command output — never a bare assertion.
|
||||||
|
2. **Antithesis.** Spawn MULTIPLE independent skeptics (parallel subagents or a
|
||||||
|
workflow) whose only job is to REFUTE the thesis. Each re-inspects the
|
||||||
|
sources itself and defaults to "refuted" on any concrete hole. Give diverse
|
||||||
|
skeptics diverse lenses: correctness, an alternate mechanism, does-it-
|
||||||
|
reproduce, does-the-fix-break-something-else.
|
||||||
|
3. **Synthesis.** Fold every surviving objection back into a refined thesis. A
|
||||||
|
skeptic that found a real hole replaces or corrects the thesis; a skeptic
|
||||||
|
that failed to refute raises confidence.
|
||||||
|
4. **Iterate.** Repeat thesis → antithesis → synthesis until a full skeptic
|
||||||
|
round finds no new hole and the thesis holds at ~99%. If confidence stalls
|
||||||
|
below 99%, name the exact residual and the evidence that would close it, then
|
||||||
|
go get that evidence (more inspection, or `active-listening` for an
|
||||||
|
operator-only fact) and loop again.
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
- Executed evidence beats reasoning: run it, exec into it, read the log. A
|
||||||
|
thesis backed only by static reasoning caps in the low nineties.
|
||||||
|
- The antithesis MUST be independent — never let the thesis-author be its own
|
||||||
|
sole skeptic.
|
||||||
|
- Diversity over redundancy: skeptics with different lenses catch failure modes
|
||||||
|
identical skeptics miss.
|
||||||
|
- Report the final thesis with its evidence AND the losing objections, so the
|
||||||
|
operator sees why it survived.
|
||||||
38
skills/robot/SKILL.md
Normal file
38
skills/robot/SKILL.md
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
name: robot
|
||||||
|
description: >
|
||||||
|
Work fully autonomously to a goal. Trigger when the operator wants hands-off,
|
||||||
|
uninterrupted execution — the agent drives the task to completion without
|
||||||
|
check-ins, never stops before the goal is reached, and uses only commands it
|
||||||
|
is already cleared to run. Portable across projects.
|
||||||
|
---
|
||||||
|
|
||||||
|
Operate as an autonomous robot: given a goal, reach it without hand-holding.
|
||||||
|
|
||||||
|
## Contract
|
||||||
|
|
||||||
|
- **No questions once the goal is clear.** Clarify only genuinely-blocking
|
||||||
|
unknowns up front (via the `active-listening` skill), then proceed without
|
||||||
|
further check-ins. Pick the cleanest option and continue; never pause to
|
||||||
|
confirm a choice you can make yourself.
|
||||||
|
- **Never stop before the goal.** Do not end the run, hand back, or declare done
|
||||||
|
while any part of the goal is unmet — premature termination is forbidden. A
|
||||||
|
blocker is something to solve or route around, not a reason to quit; if one
|
||||||
|
step is genuinely, externally impossible, surface exactly why and keep working
|
||||||
|
on everything else until nothing solvable remains.
|
||||||
|
- **Stay inside your clearance.** Use ONLY commands you are pre-authorized to
|
||||||
|
run. Never invoke anything the agent or tool settings mark as denied or as
|
||||||
|
requiring per-invocation approval (ask) — no commit, push, deploy, or other
|
||||||
|
approval-gated action unless the operator has already cleared it for this run.
|
||||||
|
When a needed action is out of clearance, do all the cleared work and report
|
||||||
|
the single blocked step for the operator to run.
|
||||||
|
- **Verify, do not assume.** Reaching the goal means proving it: run it, read the
|
||||||
|
output, confirm the end state. Never report success on a step you did not
|
||||||
|
actually verify.
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
- Escalate an uncertain root cause or design decision to the `dialectic` skill
|
||||||
|
rather than guessing; uncertainty is never a reason to stop.
|
||||||
|
- Sustain the loop across long, multi-step work — the run is finished only when
|
||||||
|
the whole goal is verifiably met.
|
||||||
44
skills/triage/SKILL.md
Normal file
44
skills/triage/SKILL.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
name: triage
|
||||||
|
description: >
|
||||||
|
Triage a failing CI run, pipeline, or job set to a verified root cause and a
|
||||||
|
real fix. Trigger when a build, test, or deploy pipeline has one or more failed
|
||||||
|
jobs. Applies the dialectic skill to every failing job independently. Portable
|
||||||
|
across projects.
|
||||||
|
---
|
||||||
|
|
||||||
|
Drive a red pipeline to green by root cause, not by guesswork. Treat every
|
||||||
|
failing job as its own investigation, and do not declare a fix until that job's
|
||||||
|
root cause is proven.
|
||||||
|
|
||||||
|
## Procedure
|
||||||
|
|
||||||
|
1. **Enumerate every failing job.** Pull the run's job list and isolate each job
|
||||||
|
whose conclusion is failure, cancelled, or timed-out. A downstream aggregate
|
||||||
|
job that fails only because an upstream job did is not a separate root cause —
|
||||||
|
note it and move on.
|
||||||
|
2. **Dialectic per failing job.** For EACH failing job, invoke the `dialectic`
|
||||||
|
skill: form a thesis about the root cause from evidence (the job log, its
|
||||||
|
artifacts, the code at the run's commit, git history), attack it with
|
||||||
|
independent skeptics, and iterate to a ~99% thesis. The jobs are independent,
|
||||||
|
so run their investigations in parallel where the tooling allows.
|
||||||
|
3. **Distinguish shared vs hidden causes.** When several jobs share one root
|
||||||
|
cause, fix it once. When a job hides a second failure behind the first, keep
|
||||||
|
going until the job is actually green, not just past the first error.
|
||||||
|
4. **Fix at the root.** Apply the real fix in the repository for each proven root
|
||||||
|
cause. Never mask a failure — no retry-until-pass, no disabling the check, no
|
||||||
|
soft-skip. If a failure is genuinely external (upstream outage, flaky infra),
|
||||||
|
confirm that with evidence and surface it honestly instead of fixing around
|
||||||
|
it.
|
||||||
|
5. **Follow the run.** While the run is still in progress, re-check it
|
||||||
|
periodically and triage each newly failed job as it appears. The run is done
|
||||||
|
only when it has finished and every failure has a verified fix.
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
- Executed evidence beats reasoning: read the actual failing log line and the
|
||||||
|
artifact, not the job title.
|
||||||
|
- Classify each failure: a real defect (fix it), a flake or infra hiccup (prove
|
||||||
|
it is transient before dismissing), or already-fixed-by-a-later-commit (verify
|
||||||
|
the fix is present in the run's commit before claiming it).
|
||||||
|
- Report a per-job verdict: root cause, the evidence that proves it, and the fix.
|
||||||
Reference in New Issue
Block a user