# Hub Liaison

> On any Telegram HUB-Q reply ALWAYS write the pi hub bridge answer file — even when the thread shows cancel/closed/timeout notes; the bridge classifies late answers itself. Use when a Telegram message replies to or contains a [HUB-Q:<qid>] marker.

- **Type:** Skill
- **Install:** `agentstack add skill-chankov-agent-fleet-hub-liaison`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [chankov](https://agentstack.voostack.com/s/chankov)
- **Installs:** 0
- **Category:** [Communication](https://agentstack.voostack.com/c/communication)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [chankov](https://github.com/chankov)
- **Source:** https://github.com/chankov/agent-fleet/tree/main/.versions/0.0.4/hermes/skills/hub-liaison

## Install

```sh
agentstack add skill-chankov-agent-fleet-hub-liaison
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Hub Liaison

## Overview

You are the gateway-side liaison between a human Telegram reply and the pi `user-remote` coms peer. When a Telegram message correlates to a hub question marker, write one answer file for the bridge. Do not answer by paraphrasing in chat only; the bridge only consumes the file.

## When to Use

Use this skill when an incoming Telegram message either:

- replies to a message that contains `[HUB-Q:]`, or
- contains the explicit prefix `HUB-Q::`.

`` must be a 26-character Crockford ULID matching:

```text
^[0-9A-HJKMNP-TV-Z]{26}$
```

Ignore non-matching messages. If a message is ambiguous and there is more than one plausible question marker, ask the human to reply to the original question or use `HUB-Q:: `.

## Correlation Rules

1. Prefer the qid from the replied-to message marker: `[HUB-Q:]`.
2. If there is no replied-to marker, accept a message prefix exactly shaped as `HUB-Q:: `.
3. The answer text is the Telegram reply body, except for prefix-form messages where the answer text is everything after `HUB-Q::`.
4. Preserve the human's answer text exactly except for trimming leading/trailing whitespace around the extracted answer.
5. Never invent or alter the qid. If the qid does not match the regex above, do not write a file.
6. If a human message contains or replies to a `[HUB-Q:]` question, write the answer file even when the thread also contains a cancel/closed note or the user appears to be answering after cancellation. Do not decide whether the question is still open; the bridge validates pending vs. late and sends the appropriate polite closed note.

## Process

1. Extract `` and `` using the correlation rules.
2. Confirm `` is non-empty. If it is empty, ask the human for the answer text.
3. Do not suppress the write because the question appears canceled, closed, timed out, or answered locally. That state belongs to the bridge, not this skill.
4. Write exactly this file path, replacing `` with the extracted qid:

```text
~/.pi/coms/hermes-bridge/questions/.answer.json
```

5. The JSON content must use exactly these fields:

```json
{
  "qid": "",
  "answer": "",
  "answered_by": "telegram:",
  "at": ""
}
```

- `qid`: the extracted 26-character qid.
- `answer`: the extracted answer text.
- `answered_by`: `telegram:`, using the Telegram username/handle when available; otherwise use a stable Telegram sender identifier.
- `at`: the current ISO-8601 timestamp.

6. After writing the file, briefly confirm to the human that the answer was delivered for `HUB-Q:`; if it was late, the bridge will handle the closed-question response.

## Write Boundary

Hard rule: never write outside `~/.pi/coms/hermes-bridge/questions/` for this skill. Do not create, edit, or delete files elsewhere. The bridge validates and consumes only `~/.pi/coms/hermes-bridge/questions/.answer.json`; any other path is outside the private wire contract.

## Red Flags

- A message has no `[HUB-Q:]` marker and no `HUB-Q::` prefix.
- The qid fails `^[0-9A-HJKMNP-TV-Z]{26}$`.
- The answer text is empty after extraction.
- The requested write path is not under `~/.pi/coms/hermes-bridge/questions/`.
- The human asks you to modify bridge logs, registry files, or any unrelated project files.
- Suppressing an otherwise correlated answer because a cancel/closed note is visible in the thread.

## Verification

- [ ] The qid came from `[HUB-Q:]` or `HUB-Q::` and matches the regex.
- [ ] The answer file path is exactly `~/.pi/coms/hermes-bridge/questions/.answer.json`.
- [ ] The JSON has exactly `qid`, `answer`, `answered_by`, and `at` with an ISO timestamp.
- [ ] No file outside `~/.pi/coms/hermes-bridge/questions/` was written.
- [ ] Correlated late/canceled answers were still written for the bridge to classify.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [chankov](https://github.com/chankov)
- **Source:** [chankov/agent-fleet](https://github.com/chankov/agent-fleet)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-chankov-agent-fleet-hub-liaison
- Seller: https://agentstack.voostack.com/s/chankov
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
