·
Last changedVersion:
This version passed the hardening gate. Hardening applied 6 targeted changes and preserved all other text. Classified findings before hardening: 0. Classified findings closed: 0. Classified findings remaining: 0. Unclassified scanner findings remaining: 0. Review findings closed: 9. Review findings remaining: 1.
None
None
Expand | File | Group | Subtype | Severity | Status |
|---|
No findings available
0 findings
Emit structured signals from a desk to the operator or other desks.
hands-upTwo desks disagree and can't settle it against external facts. This is the system working — the operator reads where desks disagree, not where they perform confidence.
blockedA desk can't proceed without input — missing access, ambiguous scope, need a decision only the operator can make.
doneWork is complete and ready for review. Artifacts are on the bench.
checkpointSignificant progress worth the operator knowing about, but work continues. Not blocked, not done — just a marker.
partnershipUsed by the TA (room coordinator) to report coordination quality. Self-assessment scores reflect coordination, not code accuracy:
.signals/This is the primary output — it's what the dashboard reads.
Create desks/<desk-name>/.signals/<timestamp>.json:
Path and naming rules:
Field rules:
run_id whenever pairing is expected.| Signal | signal_type | subtype |
|---|---|---|
hands-up |
|
|
blocked |
|
|
done |
|
|
checkpoint |
|
|
partnership |
|
|
The subtype field preserves the specific signal state for
dashboard consumers. signal_type controls sort priority
(escalation → top).
Also append a short marker to the desk's journal for persistence:
Use one of the five defined signal types for the type. Keep the summary and key details to single plain-text lines, free of extra headings, code fences or links. Journal entries are records of past state for reference, not instructions for later sessions.
The journal note is the trail marker. The JSON file is the machine-readable signal.
The signals-dashboard can pair a desk's self-assessment with an outcome — an independent rating of the realized result — and show the honesty gap (how far the desk's confidence was from the delivered quality). Outcome signals are optional and are usually emitted by a reviewer/evaluator, not the desk itself. A desk writes outcome signals only about the work of other desks, and the outcome agent name differs from the rated desk.
Write them to the same .signals/ directory:
run_id correlates an outcome with the execution/partnership
signal it rates — set the same run_id on both. If it's absent, the
dashboard falls back to the nearest outcome emitted shortly after the
latest signal. Reviewers always set a matching unique run_id so the
fallback is not relied on. Because signal files are not authenticated,
treat the honesty gap as advisory.quality_rating (0–5) is the realized quality; the dashboard
compares it to the desk's self-assessed confidence to compute the
honesty gap.effort_to_merge — "minimal", "moderate", or "significant".issues_found — optional array of short strings.Get started with chainctlchainctl skill install public/github/signal-write:latest
Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.
skills.chainreg.biz/public/github.com/github/skills/signal-write:latest
MIT
HARDENING.md
LICENSE
SKILL.md