用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/avivsinai/telclaude --skill external-provider命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | external-provider |
| description | Access configured sidecar providers (health, banking, government) via CLI commands. |
| allowed-tools | ["Read","Bash"] |
Use this skill when the user asks about data from configured external providers (citizen services, banking, health, etc.).
Check the provider schema to see which services are available. The authoritative list is the provider's /v1/schema response (cached in references/provider-schema.md when available). Common examples:
IMPORTANT: Use the telclaude providers ... CLI commands for all provider operations.
telclaude CLI commands (providers query, providers schema, send-attachment, etc.)Extract the user ID from <request-context> for provider queries.
Look for this tag in your system context:
<request-context user-id="admin" />
telclaude providers query falls back to TELCLAUDE_REQUEST_USER_ID when the relay exports it, but pass --user-id explicitly whenever you have the value or when running outside the relay context.
Read references/provider-schema.md
This shows the provider ID and available services/actions.
telclaude providers query <providerId> <service> <action> --user-id <userId>
With parameters:
telclaude providers query <providerId> <service> <action> --user-id <userId> --params '{"key": "value"}'
Examples (assuming <request-context user-id="admin" />):
# Get appointments
telclaude providers query my-provider health-api appointments --user-id admin
# Get bank transactions with date range
telclaude providers query my-provider bank-api transactions --user-id admin --params '{"startDate": "2024-01-01"}'
# Get document status
telclaude providers query my-provider gov-api status --user-id admin
The command outputs JSON. The exact shape is provider-dependent, but the common structure is:
{
"status": "ok" | "auth_required" | "challenge_pending" | "error",
"errorCode": "credentials_missing" | "session_expired" | "auth_required" | "...",
"data": { ... },
"attachments": [
{
"id": "att_123",
"filename": "document.pdf",
"mimeType": "application/pdf",
"size": 12345,
"ref": "att_abc123.1234567890.signature",
"textContent": "Extracted text from the PDF for analysis..."
}
]
}
Some providers may include additional fields (e.g., confidence, lastUpdated, errorCode).
**Note:** The relay proxy intercepts responses and:
- Strips `inline` base64 content (you won't see it)
- Stores the file in the outbox
- Adds a `ref` token for delivery
### 4. Handle status codes
- `ok`: Present the data. Check for `noResults` field - if present, tell user "no records found"
- `credentials_missing`: The provider has no stored session for this user. For session-only
providers, tell the operator to run `/providers enroll <service>`. Do not give CLI password
setup instructions and do not ask the user for credentials.
- `session_expired`: The stored provider session is no longer usable. Tell the operator to
re-enroll with `/providers enroll <service>`. Do not treat this as first-time setup or give
CLI password instructions.
- `auth_required`: Authentication is required but the provider did not identify whether the
session is missing or expired. Use the provider's documented session-only enrollment path.
- `challenge_pending`: Ask user to complete verification via `/otp <service> <code>`
- `error`: Show error message to user
## Handling Attachments
Attachments include:
- `ref`: Token to retrieve the stored file (use with `telclaude send-attachment`)
- `textContent`: Extracted text content (for PDFs, documents) - use this to analyze/summarize
**Important:** You will NOT see `inline` base64 content. The relay proxy strips it and stores the file automatically. Use `ref` to send files to users.
### Reading document content
Use `textContent` to answer questions about the document:
"Based on the document, [relevant information extracted from textContent]..."
### Sending files to the user
There are two cases depending on file size:
#### Case 1: Has `ref` — already stored
If the attachment has a `ref` field, the relay proxy already stored the file:
```bash
telclaude send-attachment --ref <attachment.ref>
ref — fetch from providerIf ref is empty, fetch the attachment directly:
telclaude fetch-attachment --provider <providerId> --id <attachment.id> --filename <attachment.filename> --mime <attachment.mimeType>
Both commands output:
Attachment ready: /media/outbox/documents/<filename>.pdf
or
Attachment saved to: /media/outbox/documents/<filename>.pdf
You MUST include the exact path in your response. The relay watches for this path to trigger Telegram delivery.
telclaude providers querydata and optionally attachments with ref and textContenttextContent to summarize the documentref is present: telclaude send-attachment --ref <ref>ref is empty: telclaude fetch-attachment --provider <providerId> --id <id> ...<request-context user-id="..." /> in your context. Pass it via --user-id when available, or rely on TELCLAUDE_REQUEST_USER_ID only when the relay already exports it.telclaude providers query to fetch fresh data from the provider.telclaude providers query, not WebFetch or curl/providers enroll <service> and never use CLI password setup./otp <service> <code> commandtelclaude send-attachment or telclaude fetch-attachment to deliver files. Copying files directly to /media/outbox/ will NOT trigger delivery."Your next appointment is on [date] at [time]. This information was last updated [X] minutes ago."
"To access this service, please complete verification. Check your phone for an SMS code, then reply with /otp <service> <code>."
"Authentication is required. Ask the operator to run /providers enroll <service>."
"This provider is not enrolled for this user. Ask the operator to run /providers enroll <service>."
"The provider session expired. Ask the operator to re-enroll with /providers enroll <service>."
"I found a document from [date]. There's a PDF available ([size]). Would you like me to send it to you?"
"Here's your document: /media/outbox/documents/.pdf"
| Command | Description |
|---|---|
telclaude providers query <id> <svc> <act> [--user-id <uid>] | Query provider data |
telclaude send-attachment --ref <ref> | Send stored attachment to user |
telclaude fetch-attachment --provider <id> --id <att-id> ... | Fetch and send large attachment |
Note: Extract user-id from <request-context user-id="..." />. Pass --user-id when available; otherwise providers query can use TELCLAUDE_REQUEST_USER_ID if the relay injected it.
See references/provider-schema.md for the latest schema fetched from /v1/schema.