Skip to main content

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.

跳到安装

来源信息

仓库
github/awesome-copilot
最近来源活动
2026年7月20日 02:24
检测到的 SKILL.md 语言
英语
星标
39,255
分支
4,987

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
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.
# 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`: ```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 `subtype` > when present and falls back to `signal_type` for display. If > consuming signals in your own tooling, prefer `subtype` for 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: ```markdown ## <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: ```json { "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_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. - **`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. ## 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.
在 GitHub 查看