signal-write — скилл для GitHub Copilot: установка
Скилл записывает сигналы состояния агента в JSON и журнал проекта. Нужен, когда работу надо показать оператору или панели мониторинга.
npx skills add github/awesome-copilot --skill signal-writeЧто делает signal-write
signal-write помогает агенту сообщать о состоянии работы через сигналы hands-up, blocked, done, checkpoint и partnership. Он различает запрос внимания, блокировку, готовность результата, важную контрольную точку и оценку качества координации.
Основной результат — JSON-файл в каталоге .signals/. В нём сохраняются тип сигнала, подтип, время, имя агента, самооценка и сведения о сложностях. Сигнал также нужно отметить в журнале. Для связи результата с независимой оценкой используется run_id, а поле timestamp задаёт порядок сигналов.
Ставьте скилл, если агентам нужно передавать структурированные статусы в dashboard или журнал. Для обычных ответов без такой координации он избыточен.
Какие задачи решает
- сообщить оператору о блокировке или разногласии
- отметить готовность результата к проверке
- сохранить контрольную точку работы агента
- передать оценку качества координации
Примеры запросов агенту
- Сообщи о блокировке и создай сигнал в `.signals/`.
- Отметь завершение работы сигналом `done` и добавь запись в журнал.
- Создай `checkpoint` с самооценкой и текущим `run_id`.
Как установить signal-write
1Через Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill signal-write2GitHub CLI
gh skill install github/awesome-copilot signal-write3Вручную: положить файлы
.github/skills/signal-write/SKILL.md1Через Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill signal-write -a claude-code2Вручную: положить файлы
~/.claude/skills/signal-write/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/signal-write/
Вручную: положить файлы
.agents/skills/signal-write/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/signal-write/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
Командой платформы
gemini skills install https://github.com/github/awesome-copilot --path skills/signal-writeВручную: положить файлы
.devin/skills/signal-write/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора554
Весь набор →Похожие
Вопросы о signal-write
Как установить signal-write в GitHub Copilot?
Выполните npx skills add github/awesome-copilot --skill signal-write. Файл скилла появится в .github/skills/signal-write/SKILL.md.
Что делает signal-write?
Скилл записывает структурированные сигналы агента в JSON-файлы каталога .signals/ и добавляет краткую отметку в журнал. Dashboard использует эти данные для отображения состояния работы.
Зачем signal-write нужен timestamp?
Dashboard сортирует сигналы по timestamp в формате ISO 8601 UTC. Время изменения файла используется только как запасной вариант, поэтому одной даты файловой системы недостаточно.
Исходный текст
SKILL.md · MIT
---
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 · MIT · github/awesome-copilot