signal-write
Emit structured agent signals — hands-up, blocked, done, checkpoint, partnership. Signals are written as JSON to .signals/ for dashboard consumption and noted in the journal for persistence.
- License 许可
- MIT
- 最近更新
- 2026-11-11
- Stars
- ★ 4.1w
- Forks
- 5.3k
01 前言 Front Matter
- name
- signal-write
- description
- Emit structured agent signals — hands-up, blocked, done, checkpoint, partnership. Signals are written as JSON to .signals/ for dashboard consumption and noted in the journal for persistence.
03 SKILL.md 正文
Agent Signals
Emit structured signals from a desk to the operator or other desks.
When to use
- A desk needs operator attention (hands-up, blocked)
- Work is complete and ready for review (done)
- Significant progress worth noting (checkpoint)
- Two desks disagree and can't resolve it (hands-up)
- The TA is reporting coordination quality (partnership)
Signal types
hands-up
Two 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.
blocked
A desk can't proceed without input — missing access, ambiguous scope, need a decision only the operator can make.
done
Work is complete and ready for review. Artifacts are on the bench.
checkpoint
Significant progress worth the operator knowing about, but work continues. Not blocked, not done — just a marker.
partnership
Used by the TA (room coordinator) to report coordination quality. Self-assessment scores reflect coordination, not code accuracy:
- intent — understood what the operator needed
- confidence — right work went to the right desks
- accuracy — dispatched work produced the right outcome
- completeness — nothing fell through the cracks
How to emit
1. Write a JSON signal file to .signals/
This is the primary output — it's what the dashboard reads.
Create desks/<desk-name>/.signals/<timestamp>.json (for a desk in a
group folder, <group>-desks/<desk-name>/.signals/<timestamp>.json):
{
"signal_type": "execution",
"subtype": "checkpoint",
"timestamp": "2026-07-19T21:30:00Z",
"run_id": "<optional; set to pair this with an outcome signal>",
"agent_name": "<desk-name>",
"self_assessment": {
"intent": 4,
"confidence": 5,
"accuracy": 4,
"completeness": 3
},
"patterns": {
"what_worked": "description of what went well",
"what_was_hard": "description of challenges",
"skill_gap": "areas for improvement"
},
"escalation": {
"reason": null,
"blocked_on": null,
"recommendation": null
}
}
Signal type mapping
| Signal | signal_type |
subtype |
|---|---|---|
| hands-up | "escalation" |
"hands-up" |
| blocked | "escalation" |
"blocked" |
| done | "execution" |
"done" |
| checkpoint | "execution" |
"checkpoint" |
| partnership | "partnership" |
"partnership" |
The subtype field preserves the specific signal state for
dashboard consumers. signal_type controls sort priority
(escalation → top).
Note: The signals-dashboard canvas extension reads
subtypewhen present and falls back tosignal_typefor display. If consuming signals in your own tooling, prefersubtypefor the specific state.
Ordering: include a
timestamp(ISO 8601 UTC). The dashboard orders signals by it and falls back to file mtime only when it's absent — a git clone/checkout resets mtimes, so mtime alone is not a dependable clock.
2. Note the signal in the journal
Also append a short marker to the desk's journal for persistence:
## <date> — [signal:<type>] <summary>
- <key details>
The journal note is the trail marker. The JSON file is the machine-readable signal.
Outcome signals (calibration)
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.
Write them to the same .signals/ directory:
{
"signal_type": "outcome",
"run_id": "<same run_id as the signal it rates>",
"agent_name": "<reviewer name>",
"quality_rating": 4,
"effort_to_merge": "minimal",
"issues_found": ["optional short strings"],
"timestamp": "2026-07-19T22:00:00Z"
}
run_idcorrelates an outcome with the execution/partnership signal it rates — set the samerun_idon both. If it's absent, the dashboard falls back to the nearest outcome emitted shortly after the latest signal.quality_rating(0–5) is the realized quality; the dashboard compares it to the desk's self-assessedconfidenceto compute the honesty gap.effort_to_merge—"minimal","moderate", or"significant".issues_found— optional array of short strings.
Principles
- Signals are structured, not chatty. Short, factual, actionable.
- hands-up is not failure — it's the most valuable signal. It means the system caught something one frame alone would have missed.
- Don't signal for routine progress. Signals are for state changes that affect the room, not status updates.
- blocked means truly blocked — not "I'd prefer input." If you can proceed with a reasonable default, proceed and note it.
- Self-assessment scores should be honest, not optimistic. A 3/5 is fine. A 5/5 on everything is suspicious.
04 同仓库更多 Skills
supabase-rls-policies
Write, review, and test Supabase Row Level Security (RLS) policies so that one user cannot read or change another user's rows. Use when creating or changing tables, policies, views, or security definer functions in a Supabase project, when reviewing a migration that touches RLS, or when asked to prove user isolation with pgTAP tests that sign in as two users.
skill-distribution-audit
Audit a skill collection before release or investigate installer omissions, archived/template leakage, duplicate identities, and manifest drift. Reconcile the intended public source set, distribution manifest, and actual discovery output for a specified consumer version. Includes a deterministic set-comparison helper.
logicapps-custom-code-net10-migration
Migrate Azure Logic Apps Standard local-function custom-code projects from .NET 8 to .NET 10. Use for legacy Logic Apps custom-code workspace upgrades, project/package configuration, custom-worker settings, publication, and integrated VS Code debugging. Not for ordinary .NET applications, standalone Azure Functions, Consumption workflows, or cloud deployment.
winmd-api-search
Find and explore Windows desktop APIs. Use when building features that need platform capabilities — camera, file access, notifications, UI controls, AI/ML, sensors, networking, etc. Discovers the right API for a task and retrieves full type details (methods, properties, events, enumeration values).
resemble-detect
Deepfake detection and media safety — detect AI-generated audio, images, video, and text, trace synthesis sources, apply watermarks, verify speaker identity, and analyze media intelligence using Resemble AI
quality-playbook
Run a complete quality engineering audit on any codebase. Derives behavioral requirements from the code, generates spec-traced functional tests, runs a three-pass code review with regression tests, executes a multi-model spec audit (Council of Three), and produces a consolidated bug report with TDD-verified patches. Finds the 35% of real defects that structural code review alone cannot catch. Works with any language. Trigger on 'quality playbook', 'spec audit', 'Council of Three', 'fitness-to-purpose', or 'coverage theater'.