signal-write
Lets your agent send structured signals about its progress. This helps track work and communicate status to other tools or people.
What it does
This tool allows an AI agent to send structured signals to indicate its status. It can signal when it needs help, when it's blocked, when a task is done, significant progress, or collaboration quality.
When to use it
- ✓When two AI agents disagree and cannot resolve it themselves.
- ✓When an AI agent cannot proceed without external input.
- ✓When an AI agent has completed a task and it's ready for review.
Example of what to ask your AI
“Signal that the task is done and ready for review.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The agent creates a JSON file with the signal type and relevant details, saving it to a specific folder. It also adds a short journal entry for record-keeping.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add github/awesome-copilot --skill signal-writeOr download just the file:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/signal-write/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
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:
{
"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
…
FAQ
What is a 'hands-up' signal?
It's when two AI agents disagree on something and cannot reach an agreement, requiring intervention.
What does 'blocked' mean?
It means the AI agent cannot proceed because information is missing, the scope is unclear, or it needs a decision only a human can make.
What's the difference between 'checkpoint' and 'done'?
'Checkpoint' is for marking significant progress, but work continues. 'Done' indicates that the work has been fully completed and is ready for review.
Details
Original description by the author
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.
repo: github/awesome-copilot
Popularity
- GitHub stars
- 40k
- Ranking position
- #5369
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
acquire-codebase-knowledge
Helps your agent understand and document an existing code project. It's useful for onboarding new people or getting an overview of the architecture.
github/awesome-copilot
acreadiness-assess
Enables your agent to assess a project's readiness for AI and generate a report. It's useful for understanding how well a project is prepared to use AI tools.
github/awesome-copilot
acreadiness-generate-instructions
Helps your agent create instructions for AI tools based on an assessment. It's useful for improving how AI interacts with code and closing identified gaps.
github/awesome-copilot
acreadiness-policy
Enables your agent to help define or apply policies for AI project assessment. It's useful for standardizing how projects are evaluated and ensuring compliance.
github/awesome-copilot
Similar skills
agent-architecture-audit
Makes your agent check if everything is working correctly. It finds and fixes problems in AI systems, ensuring they perform as expected.
affaan-m/ECC
agent-eval
Helps your agent compare different AI coding tools. It measures which one is faster, cheaper, and more reliable for specific tasks.
affaan-m/ECC
agent-harness-construction
Makes your agent better understand how to perform tasks. It optimizes the tools and instructions the agent uses to increase its chances of success.
affaan-m/ECC