MR
Mayur Rathi
@github
⭐ 34.1k GitHub stars

Signal-Write

Signal-Write is an data AI skill with a core value of Emit structured agent signals — hands-up, blocked, done, checkpoint, partnership. It helps developers solve real-world problems in the data domain, boosting efficiency, automating repetitive tasks, and optimizing workflows.

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.

Last verified on: 2026-08-02

Quick Facts

Category data
Works With Claude, GitHub Copilot
Source github/awesome-copilot
Stars ⭐ 34.1k
Last Verified 2026-08-02
Risk Level Low
mkdir -p ./skills/signal-write && curl -sfL https://raw.githubusercontent.com/github/awesome-copilot/main/skills/signal-write/SKILL.md -o ./skills/signal-write/SKILL.md

Run in terminal / PowerShell. Requires curl (Unix) or PowerShell 5+ (Windows).

Skill Content

# 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 —

🎯 Best For

  • Claude users
  • GitHub Copilot users
  • Data professionals
  • Analytics teams
  • Researchers

💡 Use Cases

  • Data pipeline auditing
  • Query optimization

📖 How to Use This Skill

  1. 1

    Install the Skill

    Copy the install command from the Terminal tab and run it. The SKILL.md file downloads to your local skills directory.

  2. 2

    Load into Your AI Assistant

    Open Claude or GitHub Copilot and reference the skill. Paste the SKILL.md content or use the system prompt tab.

  3. 3

    Apply Signal-Write to Your Work

    Provide context for your task — paste source material, describe your audience, or share existing work to guide the AI.

  4. 4

    Review and Refine

    Edit the AI output for accuracy, tone, and completeness. Add human insight where the AI lacks context.

❓ Frequently Asked Questions

How do I install Signal-Write?

Copy the install command from the Terminal tab and run it. The skill downloads to ./skills/signal-write/SKILL.md, ready to use.

Can I customize this skill for my team?

Absolutely. Edit the SKILL.md file to add team-specific instructions, examples, or workflows.

⚠️ Common Mistakes to Avoid

Ignoring data quality

AI analysis inherits all data quality issues — profile your data first.

🔗 Related Skills