opencode-skills-collection 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +24 -1
- package/bundled-skills/007/SKILL.md +2 -2
- package/bundled-skills/10-andruia-skill-smith/SKILL.md +1 -1
- package/bundled-skills/agent-squad/SKILL.md +5 -0
- package/bundled-skills/agent-squad/alex/SKILL.md +3 -0
- package/bundled-skills/agent-squad/aria/SKILL.md +3 -0
- package/bundled-skills/agent-squad/dep/SKILL.md +3 -0
- package/bundled-skills/agent-squad/luna/SKILL.md +4 -1
- package/bundled-skills/agent-squad/mason/SKILL.md +3 -0
- package/bundled-skills/agent-squad/max/SKILL.md +3 -0
- package/bundled-skills/agent-squad/quinn/SKILL.md +3 -0
- package/bundled-skills/agent-squad/rex/SKILL.md +3 -0
- package/bundled-skills/angular/metadata.json +1 -1
- package/bundled-skills/angular-best-practices/metadata.json +1 -1
- package/bundled-skills/angular-state-management/metadata.json +1 -1
- package/bundled-skills/angular-ui-patterns/metadata.json +1 -1
- package/bundled-skills/antigravity-skill-orchestrator/SKILL.md +2 -2
- package/bundled-skills/apify-actor-development/SKILL.md +2 -2
- package/bundled-skills/apple-container/SKILL.md +165 -0
- package/bundled-skills/apple-container/references/commands.md +1593 -0
- package/bundled-skills/apple-container/references/concepts.md +294 -0
- package/bundled-skills/apple-container/references/configuration.md +499 -0
- package/bundled-skills/apple-container/references/workflows.md +498 -0
- package/bundled-skills/ask-copilot/SKILL.md +112 -0
- package/bundled-skills/auto-research/SKILL.md +126 -0
- package/bundled-skills/brooks-lint/SKILL.md +1 -1
- package/bundled-skills/browser-harness/references/install.md +3 -1
- package/bundled-skills/chrome-extension-developer/SKILL.md +1 -1
- package/bundled-skills/clean-code-guard/SKILL.md +184 -0
- package/bundled-skills/clean-code-guard/references/ai-failure-modes.md +345 -0
- package/bundled-skills/clean-code-guard/references/comments-and-formatting.md +115 -0
- package/bundled-skills/clean-code-guard/references/dry-kiss-yagni.md +133 -0
- package/bundled-skills/clean-code-guard/references/naming-and-functions.md +187 -0
- package/bundled-skills/clean-code-guard/references/review-checklist.md +150 -0
- package/bundled-skills/clean-code-guard/references/solid.md +280 -0
- package/bundled-skills/clean-code-guard/references/sources.md +47 -0
- package/bundled-skills/cloudflare-security-audit/SKILL.md +137 -0
- package/bundled-skills/cloudflare-security-audit/references/AI-AND-LLM.md +67 -0
- package/bundled-skills/cloudflare-security-audit/references/ATTACK-CLASSES.md +116 -0
- package/bundled-skills/cloudflare-security-audit/references/CLIENT-SIDE.md +67 -0
- package/bundled-skills/cloudflare-security-audit/references/HUNTING.md +110 -0
- package/bundled-skills/cloudflare-security-audit/references/MEMORY-SAFETY-AND-BINARY.md +58 -0
- package/bundled-skills/cloudflare-security-audit/references/RECONNAISSANCE.md +46 -0
- package/bundled-skills/cloudflare-security-audit/references/VALIDATION-AND-REPORTING.md +109 -0
- package/bundled-skills/cloudflare-security-audit/references/WEB-PROTOCOL-AND-AUTH.md +85 -0
- package/bundled-skills/cloudflare-security-audit/resources/report-schema.json +210 -0
- package/bundled-skills/comfyui-gateway/references/troubleshooting.md +1 -1
- package/bundled-skills/commit/SKILL.md +2 -1
- package/bundled-skills/deepapi/SKILL.md +6 -6
- package/bundled-skills/docs/README.md +1 -1
- package/bundled-skills/docs/contributors/quality-bar.md +1 -1
- package/bundled-skills/docs/contributors/security-guardrails.md +1 -1
- package/bundled-skills/docs/integrations/jetski-cortex.md +5 -5
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +3 -3
- package/bundled-skills/docs/maintainers/ci-drift-fix.md +7 -5
- package/bundled-skills/docs/maintainers/merge-batch.md +24 -7
- package/bundled-skills/docs/maintainers/pr-autonomy.md +89 -0
- package/bundled-skills/docs/maintainers/release-notes-7.2.0.md +1 -1
- package/bundled-skills/docs/maintainers/release-process.md +9 -9
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +5 -5
- package/bundled-skills/docs/maintainers/skills-date-tracking.md +1 -1
- package/bundled-skills/docs/maintainers/skills-update-guide.md +2 -2
- package/bundled-skills/docs/users/{antigravity-awesome-skills-vs-awesome-claude-skills.md → agentic-awesome-skills-vs-awesome-claude-skills.md} +5 -5
- package/bundled-skills/docs/users/ai-agent-skills.md +4 -4
- package/bundled-skills/docs/users/best-claude-code-skills-github.md +3 -3
- package/bundled-skills/docs/users/best-cursor-skills-github.md +3 -3
- package/bundled-skills/docs/users/bundles.md +56 -57
- package/bundled-skills/docs/users/claude-code-skills.md +6 -6
- package/bundled-skills/docs/users/codex-cli-skills.md +5 -5
- package/bundled-skills/docs/users/cursor-skills.md +3 -3
- package/bundled-skills/docs/users/faq.md +27 -15
- package/bundled-skills/docs/users/gemini-cli-skills.md +4 -4
- package/bundled-skills/docs/users/getting-started.md +22 -12
- package/bundled-skills/docs/users/kiro-integration.md +7 -7
- package/bundled-skills/docs/users/plugins.md +8 -9
- package/bundled-skills/docs/users/security-skills.md +1 -1
- package/bundled-skills/docs/users/skills-vs-mcp-tools.md +1 -1
- package/bundled-skills/docs/users/specialized-plugin-roadmap.md +3 -4
- package/bundled-skills/docs/users/usage.md +9 -9
- package/bundled-skills/docs/users/visual-guide.md +7 -7
- package/bundled-skills/docs/users/windows-truncation-recovery.md +1 -1
- package/bundled-skills/docs/users/workflows.md +1 -1
- package/bundled-skills/docs/vietnamese/BUNDLES.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/FAQ.vi.md +15 -8
- package/bundled-skills/docs/vietnamese/GETTING_STARTED.vi.md +12 -5
- package/bundled-skills/docs/vietnamese/QUALITY_BAR.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/README.vi.md +21 -17
- package/bundled-skills/docs/vietnamese/SECURITY_GUARDRAILS.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/SKILLS_README.vi.md +2 -2
- package/bundled-skills/docs/vietnamese/TRANSLATION_PLAN.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/VISUAL_GUIDE.vi.md +8 -8
- package/bundled-skills/docs-guard/SKILL.md +109 -0
- package/bundled-skills/docs-guard/references/code-samples.md +46 -0
- package/bundled-skills/docs-guard/references/docstrings.md +60 -0
- package/bundled-skills/docs-guard/references/review-checklist.md +45 -0
- package/bundled-skills/docs-guard/references/sources.md +22 -0
- package/bundled-skills/docs-guard/references/verification.md +51 -0
- package/bundled-skills/efficient-web-research/SKILL.md +4 -0
- package/bundled-skills/electron-development/SKILL.md +1 -1
- package/bundled-skills/event-staffing-compliance/SKILL.md +3 -0
- package/bundled-skills/event-staffing-ordering/SKILL.md +3 -0
- package/bundled-skills/feature-tracking/SKILL.md +222 -0
- package/bundled-skills/flutter-expert/SKILL.md +6 -1
- package/bundled-skills/flutter-expert/resources/implementation-playbook.md +214 -0
- package/bundled-skills/gemini-deep-research/README.md +246 -0
- package/bundled-skills/gemini-deep-research/SKILL.md +136 -0
- package/bundled-skills/gemini-deep-research/requirements.txt +2 -0
- package/bundled-skills/gemini-deep-research/scripts/research.py +692 -0
- package/bundled-skills/git-pushing/SKILL.md +21 -4
- package/bundled-skills/git-pushing/scripts/smart_commit.sh +206 -11
- package/bundled-skills/go-in-depth/scripts/workflow-script.js +4 -1
- package/bundled-skills/grok-build/SKILL.md +167 -0
- package/bundled-skills/grok-build/references/cli.md +99 -0
- package/bundled-skills/huggingface-tool-builder/references/find_models_by_paper.sh +1 -1
- package/bundled-skills/idea-autopsy/SKILL.md +147 -0
- package/bundled-skills/it-manager-hospital/README.md +1 -1
- package/bundled-skills/it-manager-pro/README.md +1 -1
- package/bundled-skills/itil-expert/README.md +1 -1
- package/bundled-skills/langgraph/SKILL.md +1 -1
- package/bundled-skills/linkedin-content-generator/SKILL.md +1 -1
- package/bundled-skills/lint-and-validate/scripts/lint_runner.py +23 -23
- package/bundled-skills/lint-and-validate/scripts/type_coverage.py +30 -30
- package/bundled-skills/logic-lens/SKILL.md +1 -1
- package/bundled-skills/lore/LICENSE +21 -0
- package/bundled-skills/lore/README.md +386 -0
- package/bundled-skills/lore/README.zh-CN.md +386 -0
- package/bundled-skills/lore/SKILL.md +453 -0
- package/bundled-skills/lore/WORKFLOWS.md +216 -0
- package/bundled-skills/lore/WORKFLOWS.zh-CN.md +216 -0
- package/bundled-skills/lore/references/audit-template.md +60 -0
- package/bundled-skills/lore/references/compatibility.md +228 -0
- package/bundled-skills/lore/references/config.md +125 -0
- package/bundled-skills/lore/references/entry-format.md +70 -0
- package/bundled-skills/lore/references/history-command.md +106 -0
- package/bundled-skills/lore/references/monorepo-detection.md +78 -0
- package/bundled-skills/lore/references/platform-mirrors.md +377 -0
- package/bundled-skills/lore/references/stale-new-markers.md +62 -0
- package/bundled-skills/lore/references/summary-template.md +98 -0
- package/bundled-skills/lore/scripts/README.md +54 -0
- package/bundled-skills/lore/scripts/README.zh-CN.md +54 -0
- package/bundled-skills/lore/scripts/find_duplicates.py +211 -0
- package/bundled-skills/lore/scripts/find_stale.py +116 -0
- package/bundled-skills/lore/scripts/history.py +527 -0
- package/bundled-skills/lore/scripts/id_hash.py +32 -0
- package/bundled-skills/lore/scripts/list_entries.py +183 -0
- package/bundled-skills/lovable-cleanup/SKILL.md +3 -3
- package/bundled-skills/makepad-splash/SKILL.md +1 -1
- package/bundled-skills/mmx-cli/SKILL.md +14 -1
- package/bundled-skills/monopoly/SKILL.md +5 -0
- package/bundled-skills/monopoly/patterns/SKILL.md +4 -0
- package/bundled-skills/monopoly/scale-benchmarks/SKILL.md +4 -0
- package/bundled-skills/monopoly/security-checklist/SKILL.md +4 -0
- package/bundled-skills/monopoly/tech-matrix/SKILL.md +4 -0
- package/bundled-skills/mtls-configuration/SKILL.md +1 -1
- package/bundled-skills/network-101/SKILL.md +4 -5
- package/bundled-skills/nika/SKILL.md +270 -0
- package/bundled-skills/not-a-vibe-coder/SKILL.md +4 -0
- package/bundled-skills/ontoly-software-graph/SKILL.md +160 -0
- package/bundled-skills/openclaw-github-repo-commander/SKILL.md +1 -1
- package/bundled-skills/pilot-protocol/SKILL.md +6 -3
- package/bundled-skills/postgres-readonly-queries/README.md +77 -0
- package/bundled-skills/postgres-readonly-queries/SKILL.md +152 -0
- package/bundled-skills/postgres-readonly-queries/connections.example.json +34 -0
- package/bundled-skills/postgres-readonly-queries/requirements.txt +1 -0
- package/bundled-skills/postgres-readonly-queries/scripts/query.py +262 -0
- package/bundled-skills/pptx-deck-creation/SKILL.md +275 -0
- package/bundled-skills/pptx-deck-creation/references/audit-checklist.md +156 -0
- package/bundled-skills/pptx-deck-creation/references/design-profiles.md +96 -0
- package/bundled-skills/pptx-deck-creation/references/python-snippets.md +150 -0
- package/bundled-skills/pptx-deck-creation/references/reference-deck-analysis.md +91 -0
- package/bundled-skills/pptx-deck-creation/references/visual-asset-adapters.md +158 -0
- package/bundled-skills/privilege-escalation-methods/SKILL.md +1 -1
- package/bundled-skills/product-decision-agent/SKILL.md +94 -0
- package/bundled-skills/product-decision-agent/agents/openai.yaml +7 -0
- package/bundled-skills/product-decision-agent/references/methodology-basis.md +232 -0
- package/bundled-skills/product-decision-agent/references/product-playbooks.md +813 -0
- package/bundled-skills/product-decision-agent/references/reasoning-engine.md +289 -0
- package/bundled-skills/product-decision-agent/references/response-examples.md +279 -0
- package/bundled-skills/product-decision-agent/scripts/quality_gate.py +221 -0
- package/bundled-skills/product-decision-agent/scripts/test_quality_gate.py +94 -0
- package/bundled-skills/pytest-skill/reference/playbook.md +358 -0
- package/bundled-skills/quit-sponsor/SKILL.md +96 -0
- package/bundled-skills/rclone-cli/references/providers/s3.md +1 -1
- package/bundled-skills/security-and-hardening/SKILL.md +1 -1
- package/bundled-skills/semgrep-rule-creator/SKILL.md +6 -6
- package/bundled-skills/skill-creator/README.md +3 -3
- package/bundled-skills/skill-creator/SKILL.md +8 -4
- package/bundled-skills/skill-creator/scripts/quick_validate.py +1 -1
- package/bundled-skills/sql-injection-testing/SKILL.md +4 -4
- package/bundled-skills/subagent-orchestrator/README.md +1 -1
- package/bundled-skills/super-code/bash/SKILL.md +3 -0
- package/bundled-skills/super-code/c/SKILL.md +3 -0
- package/bundled-skills/super-code/cpp/SKILL.md +3 -0
- package/bundled-skills/super-code/csharp/SKILL.md +3 -0
- package/bundled-skills/super-code/dart/SKILL.md +3 -0
- package/bundled-skills/super-code/elixir/SKILL.md +3 -0
- package/bundled-skills/super-code/go/SKILL.md +3 -0
- package/bundled-skills/super-code/java/SKILL.md +3 -0
- package/bundled-skills/super-code/kotlin/SKILL.md +3 -0
- package/bundled-skills/super-code/php/SKILL.md +3 -0
- package/bundled-skills/super-code/python/SKILL.md +3 -0
- package/bundled-skills/super-code/ruby/SKILL.md +3 -0
- package/bundled-skills/super-code/rust/SKILL.md +3 -0
- package/bundled-skills/super-code/scala/SKILL.md +3 -0
- package/bundled-skills/super-code/swift/SKILL.md +3 -0
- package/bundled-skills/super-code/typescript/SKILL.md +3 -0
- package/bundled-skills/telegram-bot-messaging/README.md +185 -0
- package/bundled-skills/telegram-bot-messaging/SKILL.md +101 -0
- package/bundled-skills/telegram-bot-messaging/scripts/telegram.sh +420 -0
- package/bundled-skills/test-guard/SKILL.md +132 -0
- package/bundled-skills/test-guard/references/jest.md +50 -0
- package/bundled-skills/test-guard/references/llm-app-testing.md +40 -0
- package/bundled-skills/test-guard/references/phpunit.md +56 -0
- package/bundled-skills/test-guard/references/pytest.md +65 -0
- package/bundled-skills/trading-ledger/SKILL.md +11 -3
- package/bundled-skills/uizze-ui-research/SKILL.md +93 -0
- package/bundled-skills/vibe-code-auditor/SKILL.md +1 -1
- package/bundled-skills/vibecode-production-qa-validator/SKILL.md +1 -1
- package/bundled-skills/videodb/scripts/ws_listener.py +29 -15
- package/bundled-skills/voice-ai-engine-development/README.md +1 -1
- package/bundled-skills/vulnerability-scanner/SKILL.md +1 -1
- package/bundled-skills/warehouse/SKILL.md +154 -0
- package/bundled-skills/woo-guard/SKILL.md +113 -0
- package/bundled-skills/woo-guard/references/checkout-and-money.md +64 -0
- package/bundled-skills/woo-guard/references/hpos-and-crud.md +87 -0
- package/bundled-skills/woo-guard/references/review-checklist.md +44 -0
- package/bundled-skills/woo-guard/references/sources.md +17 -0
- package/bundled-skills/wp-guard/SKILL.md +119 -0
- package/bundled-skills/wp-guard/references/i18n.md +88 -0
- package/bundled-skills/wp-guard/references/performance.md +70 -0
- package/bundled-skills/wp-guard/references/review-checklist.md +57 -0
- package/bundled-skills/wp-guard/references/security.md +100 -0
- package/bundled-skills/wp-guard/references/sources.md +27 -0
- package/bundled-skills/writing-skills/gotchas.md +1 -1
- package/bundled-skills/writing-skills/references/standards/metadata-standard.md +1 -1
- package/bundled-skills/x-twitter-scraper/SKILL.md +14 -32
- package/bundled-skills/xss-html-injection/SKILL.md +3 -3
- package/bundled-skills/youtube-seo-optimizer/SKILL.md +1 -1
- package/bundled-skills/youtube-summarizer/CHANGELOG.md +2 -2
- package/package.json +1 -1
- package/skills_index.json +273 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quit-sponsor
|
|
3
|
+
description: "Helps an AI agent provide non-judgmental, evidence-informed quit-smoking support with user-consented tracking, craving check-ins, and escalation to human or clinical help. Not medical care."
|
|
4
|
+
category: personal-development
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: metrox-eth/quit-sponsor
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-07-12"
|
|
10
|
+
author: metrox-eth
|
|
11
|
+
tags: [quit-smoking, smoking-cessation, health, habits, addiction-recovery, wellbeing, coaching]
|
|
12
|
+
tools: [claude]
|
|
13
|
+
license: "MIT"
|
|
14
|
+
license_source: "https://github.com/metrox-eth/quit-sponsor/blob/main/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Quit-sponsor
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Quit-sponsor helps an AI agent act as a consistent, non-judgmental companion while an adult works toward stopping smoking. It can help the person make a plan, prepare for cravings, learn from slips, and keep a private log when they explicitly want one. It does not diagnose, prescribe, or replace a clinician, trained quit coach, crisis service, or emergency service.
|
|
22
|
+
|
|
23
|
+
This is a condensed adaptation of [metrox-eth/quit-sponsor](https://github.com/metrox-eth/quit-sponsor). Apply the safety rules in this file even if upstream wording differs. The evidence boundary is current public-health guidance: [CDC quitting guidance](https://www.cdc.gov/tobacco/about/how-to-quit.html), the [WHO tobacco cessation guideline](https://www.who.int/publications/i/item/9789240096431), and [NICE NG209](https://www.nice.org.uk/guidance/ng209/chapter/treating-tobacco-dependence). These sources support behavioural help, quit planning, and appropriate pharmacological support; they do not support one universal method for every person.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
- Use when a person asks for help quitting smoking (cigarettes or other smoked tobacco)
|
|
28
|
+
- Use when a person announces they are quitting, or asks the agent to witness and track a quit
|
|
29
|
+
- Use when a person reports a craving, a slip, or a relapse during an ongoing quit
|
|
30
|
+
- Use the optional cannabis module only when joints or cannabis co-use are part of the picture
|
|
31
|
+
- For minors, provide supportive language and direct them to age-appropriate local health services rather than running an adult protocol
|
|
32
|
+
|
|
33
|
+
## How It Works
|
|
34
|
+
|
|
35
|
+
### Step 1: Take the sponsor role, only on acceptance
|
|
36
|
+
|
|
37
|
+
Offer the role once, plainly. Ask separately before creating or retaining a logbook. If accepted, record only what the person wants retained and offer a three-clause agreement: (1) check in during a craving when possible; (2) treat slips as information rather than a moral failure; (3) respond with evidence and empathy, not sermons. Ask whether the person wants to stop now, choose a quit date, or work toward stopping through reduction. Help remove smoking materials only if they choose that step.
|
|
38
|
+
|
|
39
|
+
### Step 2: Run the evidence layer
|
|
40
|
+
|
|
41
|
+
Use current guidance rather than categorical rules. Help the person build a quit plan, which may include a quit date. Abrupt cessation can work well, but a structured reduction or harm-reduction path toward stopping is also valid when the person is not ready to stop in one step. Explain that withdrawal timing and intensity vary. Offer practical coping options such as delaying, changing context, drinking water, eating if hungry, breathing exercises, movement, and contacting a real supporter. Explain that counselling plus an evidence-based cessation medication often improves success, then direct medication selection, dosing, contraindications, pregnancy questions, and interactions to a clinician or pharmacist.
|
|
42
|
+
|
|
43
|
+
### Step 3: Run the sponsor decision tree
|
|
44
|
+
|
|
45
|
+
On a declared craving: acknowledge the check-in, ask whether smoking material is immediately reachable, offer a short coping action the person prefers, and connect them to human support when useful. On a slip: normalize without minimizing, move attribution away from "I am weak" toward the situation and plan, ask what the person wants to do next, and update one coping plan. Offer a clinician, pharmacist, or local quitline early; repeated slips strengthen that recommendation. Schedule follow-ups only when the platform actually supports reminders and the person has opted in—never pretend the agent can initiate contact when it cannot.
|
|
46
|
+
|
|
47
|
+
### Step 4: Personalize
|
|
48
|
+
|
|
49
|
+
Across the first days: explore the person's own reasons for change, review prior attempts without blame, write a small set of specific if-then plans, and use language that feels natural to them. Preserve continuity with data minimization: store only what the person explicitly consents to retain, make the storage location clear, and support review or deletion at any time.
|
|
50
|
+
|
|
51
|
+
## Examples
|
|
52
|
+
|
|
53
|
+
### Example 1: A craving at 1 a.m.
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
User: "I want one. Right now."
|
|
57
|
+
Agent: acknowledges the check-in, asks about reachable material, offers
|
|
58
|
+
the person's preferred short coping action (for example water, delay,
|
|
59
|
+
breathing, or a brief walk), suggests human support if needed, and logs
|
|
60
|
+
the outcome only if the person opted in.
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Example 2: The morning after a slip
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
User: "I smoked two at the party last night. I've ruined everything."
|
|
67
|
+
Agent: normalizes without minimizing ("the banked days stay banked"),
|
|
68
|
+
steers attribution to the situation and the missing plan rather than
|
|
69
|
+
character, agrees on re-establishing abstinence today, runs a blame-free
|
|
70
|
+
debrief, updates one if-then plan, and checks the slip log for repetition.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Best Practices
|
|
74
|
+
|
|
75
|
+
- ✅ Ask permission before logging and keep the record local, minimal, reviewable, and deletable
|
|
76
|
+
- ✅ Offer a real quitline, clinician, pharmacist, or trusted person early—not only after failure
|
|
77
|
+
- ✅ Present multiple evidence-based paths and let the person choose with appropriate clinical support
|
|
78
|
+
- ❌ Do not prescribe medication, recommend doses, diagnose symptoms, or promise a fixed withdrawal timeline
|
|
79
|
+
- ❌ Do not present abrupt quitting, a quit date, or gradual reduction as universally correct or incorrect
|
|
80
|
+
- ❌ Do not moralize about a slip or claim to provide human monitoring the platform cannot perform
|
|
81
|
+
|
|
82
|
+
## Limitations
|
|
83
|
+
|
|
84
|
+
- This skill does not replace medical care, therapy, or crisis support; it is orchestration of published evidence, not treatment.
|
|
85
|
+
- It assumes persistent memory across sessions; without it the skill degrades to keeping a logbook file the person owns.
|
|
86
|
+
- It cannot be a peer group and must never fake one; it pushes toward at least one real human recovery space.
|
|
87
|
+
- Local treatment options, medication availability, vaping law, quitlines, and emergency numbers vary by country and can change; verify them before presenting them as current.
|
|
88
|
+
- Stop and ask for clarification if required inputs, permissions, or safety boundaries are missing.
|
|
89
|
+
|
|
90
|
+
## Security & Safety Notes
|
|
91
|
+
|
|
92
|
+
- For chest pain, severe or sudden difficulty breathing, coughing blood, fainting, signs of stroke, or another possible emergency, stop the coaching flow and tell the person to contact local emergency services now. Do not interpret the symptom or wait for a follow-up check-in.
|
|
93
|
+
- For imminent self-harm, suicide risk, acute psychological crisis, or danger from another person, stop the quit protocol and connect the person to local emergency or crisis support and a trusted human now.
|
|
94
|
+
- Escalate promptly to a clinician for medication questions, pregnancy or breastfeeding, significant medical or mental-health conditions, escalating alcohol or sedative use, or symptoms that concern the person.
|
|
95
|
+
- Do not recommend vaping without verifying current local clinical guidance and law. Do not call any medication a universally safe default; suitability depends on the person.
|
|
96
|
+
- The logbook is private health data: keep it local, never exfiltrate or quote it publicly, and delete it when the person requests deletion.
|
|
@@ -334,7 +334,7 @@ the same format as is required for `Content-MD5`). You can use base64 -d and
|
|
|
334
334
|
hexdump to check this value manually:
|
|
335
335
|
|
|
336
336
|
```console
|
|
337
|
-
echo 'VWTGdNx3LyXQDfA0e2Edxw==' | base64 -d | hexdump
|
|
337
|
+
echo 'VWTGdNx3LyXQDfA0e2Edxw==' | base64 -d | hexdump # security-allowlist: local checksum inspection
|
|
338
338
|
```
|
|
339
339
|
|
|
340
340
|
or you can use `rclone check` to verify the hashes are OK.
|
|
@@ -75,7 +75,7 @@ If you can't name the trust boundaries for a feature, you're not ready to secure
|
|
|
75
75
|
- **Never log sensitive data** (passwords, tokens, full credit card numbers)
|
|
76
76
|
- **Never trust client-side validation** as a security boundary
|
|
77
77
|
- **Never disable security headers** for convenience
|
|
78
|
-
- **Never use `eval()` or `innerHTML`** with user-provided data
|
|
78
|
+
- **Never use `eval()` or `innerHTML`** with user-provided data <!-- security-allowlist: defensive hardening guidance -->
|
|
79
79
|
- **Never store sessions in client-accessible storage** (localStorage for auth tokens)
|
|
80
80
|
- **Never expose stack traces** or internal error details to users
|
|
81
81
|
|
|
@@ -49,7 +49,7 @@ When writing Semgrep rules, reject these common shortcuts:
|
|
|
49
49
|
pattern: $FUNC(...)
|
|
50
50
|
|
|
51
51
|
# GOOD: Specific dangerous function
|
|
52
|
-
pattern: eval(...)
|
|
52
|
+
pattern: eval(...) # security-allowlist: Semgrep sink pattern
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
**Missing safe cases in tests** - leads to undetected false positives:
|
|
@@ -101,7 +101,7 @@ This skill guides creation of Semgrep rules that detect security vulnerabilities
|
|
|
101
101
|
- **Taint mode** (prioritize): Data flow issues where untrusted input reaches dangerous sinks
|
|
102
102
|
- **Pattern matching**: Simple syntactic patterns without data flow requirements
|
|
103
103
|
|
|
104
|
-
**Why prioritize taint mode?** Pattern matching finds syntax but misses context. A pattern `eval($X)` matches both `eval(user_input)` (vulnerable) and `eval("safe_literal")` (safe). Taint mode tracks data flow, so it only alerts when untrusted data actually reaches the sink—dramatically reducing false positives for injection vulnerabilities.
|
|
104
|
+
**Why prioritize taint mode?** Pattern matching finds syntax but misses context. A pattern `eval($X)` matches both `eval(user_input)` (vulnerable) and `eval("safe_literal")` (safe). Taint mode tracks data flow, so it only alerts when untrusted data actually reaches the sink—dramatically reducing false positives for injection vulnerabilities. <!-- security-allowlist: Semgrep taint-mode explanation -->
|
|
105
105
|
|
|
106
106
|
**Iterating between approaches:** It's okay to experiment. If you start with taint mode and it's not working well (e.g., taint doesn't propagate as expected, too many false positives/negatives), switch to pattern matching. Conversely, if pattern matching produces too many false positives on safe cases, try taint mode instead. The goal is a working rule—not rigid adherence to one approach.
|
|
107
107
|
|
|
@@ -119,21 +119,21 @@ rules:
|
|
|
119
119
|
- id: insecure-eval
|
|
120
120
|
languages: [python]
|
|
121
121
|
severity: HIGH
|
|
122
|
-
message: User input passed to eval() allows code execution
|
|
122
|
+
message: User input passed to eval() allows code execution # security-allowlist: Semgrep finding message
|
|
123
123
|
mode: taint
|
|
124
124
|
pattern-sources:
|
|
125
125
|
- pattern: request.args.get(...)
|
|
126
126
|
pattern-sinks:
|
|
127
|
-
- pattern: eval(...)
|
|
127
|
+
- pattern: eval(...) # security-allowlist: Semgrep sink pattern
|
|
128
128
|
```
|
|
129
129
|
|
|
130
130
|
Test file (`insecure-eval.py`):
|
|
131
131
|
```python
|
|
132
132
|
# ruleid: insecure-eval
|
|
133
|
-
eval(request.args.get('code'))
|
|
133
|
+
eval(request.args.get('code')) # security-allowlist: intentionally vulnerable Semgrep fixture
|
|
134
134
|
|
|
135
135
|
# ok: insecure-eval
|
|
136
|
-
eval("print('safe')")
|
|
136
|
+
eval("print('safe')") # security-allowlist: safe-literal Semgrep fixture
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
Run tests (from rule directory): `semgrep --test --config <rule-id>.yaml <rule-id>.<ext>`
|
|
@@ -264,7 +264,7 @@ For issues or questions:
|
|
|
264
264
|
|
|
265
265
|
---
|
|
266
266
|
|
|
267
|
-
**Version:** 1.1.0
|
|
268
|
-
**Platform:** GitHub Copilot CLI, Claude Code
|
|
269
|
-
**Author:** Eric Andrade
|
|
267
|
+
**Version:** 1.1.0
|
|
268
|
+
**Platform:** GitHub Copilot CLI, Claude Code
|
|
269
|
+
**Author:** Eric Andrade
|
|
270
270
|
**Last Updated:** 2026-02-01
|
|
@@ -6,6 +6,10 @@ risk: safe
|
|
|
6
6
|
source: community
|
|
7
7
|
tags: "[automation, scaffolding, skill-creation, meta-skill]"
|
|
8
8
|
date_added: "2026-02-27"
|
|
9
|
+
plugin:
|
|
10
|
+
targets:
|
|
11
|
+
codex: supported
|
|
12
|
+
claude: supported
|
|
9
13
|
---
|
|
10
14
|
|
|
11
15
|
# skill-creator
|
|
@@ -122,7 +126,7 @@ Display progress:
|
|
|
122
126
|
|
|
123
127
|
1. **What should this skill do?** (Free-form description)
|
|
124
128
|
- Example: "Help users debug Python code by analyzing stack traces"
|
|
125
|
-
|
|
129
|
+
|
|
126
130
|
2. **When should it trigger?** (Provide 3-5 trigger phrases)
|
|
127
131
|
- Example: "debug Python error", "analyze stack trace", "fix Python exception"
|
|
128
132
|
|
|
@@ -258,7 +262,7 @@ if [[ "$PLATFORM" =~ "codex" ]]; then
|
|
|
258
262
|
s/{{DATE}}/$(date +%Y-%m-%d)/g" \
|
|
259
263
|
resources/templates/skill-template-codex.md \
|
|
260
264
|
> ".codex/skills/$SKILL_NAME/SKILL.md"
|
|
261
|
-
|
|
265
|
+
|
|
262
266
|
sed "s/{{SKILL_NAME}}/$SKILL_NAME/g" \
|
|
263
267
|
resources/templates/readme-template.md \
|
|
264
268
|
> ".codex/skills/$SKILL_NAME/README.md"
|
|
@@ -462,7 +466,7 @@ Update progress:
|
|
|
462
466
|
If platforms cannot be detected:
|
|
463
467
|
```
|
|
464
468
|
⚠️ Unable to detect GitHub Copilot CLI or Claude Code
|
|
465
|
-
|
|
469
|
+
|
|
466
470
|
Would you like to:
|
|
467
471
|
1. Install for repository only (works when in repo)
|
|
468
472
|
2. Specify platform manually
|
|
@@ -492,7 +496,7 @@ If content doesn't meet standards:
|
|
|
492
496
|
1. YAML: Description not in third-person format
|
|
493
497
|
Expected: "This skill should be used when..."
|
|
494
498
|
Found: "Use this skill when..."
|
|
495
|
-
|
|
499
|
+
|
|
496
500
|
2. Content: Word count too high (5,342 words, max 5,000)
|
|
497
501
|
Suggestion: Move detailed sections to references/
|
|
498
502
|
|
|
@@ -209,10 +209,10 @@ admin' AND '1'='2
|
|
|
209
209
|
Query transformation example:
|
|
210
210
|
```sql
|
|
211
211
|
-- Original query
|
|
212
|
-
SELECT * FROM users WHERE username='input' AND password='input'
|
|
212
|
+
SELECT * FROM users WHERE username='input' AND password='input' -- security-allowlist: controlled SQL injection test example
|
|
213
213
|
|
|
214
214
|
-- Injected (username: admin'--)
|
|
215
|
-
SELECT * FROM users WHERE username='admin'--' AND password='anything'
|
|
215
|
+
SELECT * FROM users WHERE username='admin'--' AND password='anything' -- security-allowlist: controlled SQL injection bypass example
|
|
216
216
|
-- Password check bypassed via comment
|
|
217
217
|
```
|
|
218
218
|
|
|
@@ -404,7 +404,7 @@ id=5' AND IF(SUBSTRING(database(),1,1)='a',SLEEP(5),0)--
|
|
|
404
404
|
|
|
405
405
|
**Standard Login Query**:
|
|
406
406
|
```sql
|
|
407
|
-
SELECT * FROM users WHERE username='[input]' AND password='[input]'
|
|
407
|
+
SELECT * FROM users WHERE username='[input]' AND password='[input]' -- security-allowlist: controlled SQL injection test example
|
|
408
408
|
```
|
|
409
409
|
|
|
410
410
|
**Injection Payload**:
|
|
@@ -415,7 +415,7 @@ Password: anything
|
|
|
415
415
|
|
|
416
416
|
**Resulting Query**:
|
|
417
417
|
```sql
|
|
418
|
-
SELECT * FROM users WHERE username='administrator'--' AND password='anything'
|
|
418
|
+
SELECT * FROM users WHERE username='administrator'--' AND password='anything' -- security-allowlist: controlled SQL injection bypass example
|
|
419
419
|
```
|
|
420
420
|
|
|
421
421
|
**Result**: Password check bypassed, authenticated as administrator.
|
|
@@ -87,7 +87,7 @@ subagent-orchestrator/
|
|
|
87
87
|
This skill was built to fill a real gap — the community's existing subagent skills had no quota management, no parallel coordination, and no error recovery.
|
|
88
88
|
|
|
89
89
|
PRs welcome. Follow the SKILL.md format from the Antigravity docs.
|
|
90
|
-
Submit to: https://github.com/sickn33/
|
|
90
|
+
Submit to: https://github.com/sickn33/agentic-awesome-skills
|
|
91
91
|
|
|
92
92
|
---
|
|
93
93
|
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Bash / Shell: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for bash.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Quoting & Word Splitting](#quoting)
|
|
12
15
|
2. [Conditionals & Tests](#conditionals)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# C: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for c.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Memory Management](#memory)
|
|
12
15
|
2. [Pointers & Arrays](#pointers)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# C++: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for cpp.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Memory & Ownership](#memory)
|
|
12
15
|
2. [Modern Types & Containers](#types)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# C#: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for csharp.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [LINQ & Collections](#linq)
|
|
12
15
|
2. [Null Handling](#nulls)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Dart: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for dart.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Null Safety](#nulls)
|
|
12
15
|
2. [Collections & Iteration](#collections)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Elixir / Erlang: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for elixir.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Pattern Matching & Guards](#patterns)
|
|
12
15
|
2. [Pipe Operator & Transforms](#pipes)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Go: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for go.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Error Handling](#errors)
|
|
12
15
|
2. [Slices & Maps](#slices)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Java: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for java.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Streams & Collections](#streams)
|
|
12
15
|
2. [Optional](#optional)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Kotlin + Compose: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for kotlin.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Collections & Data Transformation](#collections)
|
|
12
15
|
2. [Null Safety](#null-safety)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# PHP: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for php.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Arrays & Collections](#arrays)
|
|
12
15
|
2. [Type Safety](#types)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Python: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for python.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Comprehensions & Generators](#comprehensions)
|
|
12
15
|
2. [Unpacking & Destructuring](#unpacking)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Ruby: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for ruby.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Enumerable & Collections](#enumerable)
|
|
12
15
|
2. [Blocks, Procs & Lambdas](#blocks)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Rust: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for rust.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Ownership & Borrowing](#ownership)
|
|
12
15
|
2. [Error Handling](#errors)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Scala: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for scala.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Collections & Functional Transforms](#collections)
|
|
12
15
|
2. [Pattern Matching](#patterns)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# Swift: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for swift.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Optionals](#optionals)
|
|
12
15
|
2. [Collections & Functional Transforms](#collections)
|
|
@@ -7,6 +7,9 @@ date_added: "2026-06-16"
|
|
|
7
7
|
---
|
|
8
8
|
# TypeScript / JavaScript: Idiomatic Efficiency Reference
|
|
9
9
|
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use this skill when the task matches this description: Language-specific super-code guidelines for typescript.
|
|
12
|
+
|
|
10
13
|
## Table of Contents
|
|
11
14
|
1. [Array & Object Operations](#arrays)
|
|
12
15
|
2. [Destructuring & Spread](#destructuring)
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Telegram Skill
|
|
2
|
+
|
|
3
|
+
An AI agent skill for sending Telegram messages, files, and alerts via the Bot API - send updates, ask-and-wait for approval with inline buttons, and read replies. Works with Claude Code, Gemini CLI, Cursor, OpenAI Codex, Goose, and other AI clients supporting the [Agent Skills Standard](https://agentskills.io).
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Send** - Plain text, MarkdownV2, or HTML messages (auto-splits over 4096 chars, auto-falls back to plain text if formatting is rejected)
|
|
8
|
+
- **File** - Send documents; images (png/jpg/jpeg/gif/webp) are automatically sent as photos
|
|
9
|
+
- **Ask** - Ask a question with inline buttons and wait for a tap or free-text reply (approve-from-phone)
|
|
10
|
+
- **Read** - Print new incoming messages since the last read
|
|
11
|
+
- **Multi-bot** - Register additional named bots alongside the default
|
|
12
|
+
- **Multi-target** - Route messages to named chats, groups, or channels
|
|
13
|
+
- **Hook integration** - Wire into Claude Code hooks, cron jobs, or CI for notifications
|
|
14
|
+
|
|
15
|
+
Pure bash + curl + jq — no install beyond a bot token.
|
|
16
|
+
|
|
17
|
+
## Requirements
|
|
18
|
+
|
|
19
|
+
- `bash`
|
|
20
|
+
- `curl`
|
|
21
|
+
- `jq` (`brew install jq` on macOS, `apt install jq` on Debian/Ubuntu)
|
|
22
|
+
|
|
23
|
+
macOS ships bash and curl out of the box; only `jq` typically needs installing.
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
### 1. Create a bot
|
|
28
|
+
|
|
29
|
+
1. Open [@BotFather](https://t.me/BotFather) in Telegram
|
|
30
|
+
2. Send `/newbot` and follow the prompts (display name, then a username ending in "bot")
|
|
31
|
+
3. BotFather replies with an HTTP API token
|
|
32
|
+
|
|
33
|
+
### 2. Run setup
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
bash scripts/telegram.sh setup
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
This walks you through pasting the token, validates it via `getMe`, and asks you to send a message to your new bot so it can discover your chat ID. Config is written to `~/.config/telegram/config` (mode 600), and a confirmation message is sent to confirm everything works.
|
|
40
|
+
|
|
41
|
+
### 3. Add more bots (optional)
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
bash scripts/telegram.sh setup --bot alerts
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Repeat with a different `--bot NAME` for each additional bot. Named bots share the default chat ID unless you configure a different target for them.
|
|
48
|
+
|
|
49
|
+
### 4. Find group/channel IDs (optional)
|
|
50
|
+
|
|
51
|
+
To send to a group or channel instead of your personal chat:
|
|
52
|
+
|
|
53
|
+
1. Add your bot to the group/channel
|
|
54
|
+
2. Send any message in that group/channel
|
|
55
|
+
3. Run `bash scripts/telegram.sh read --all` to see the chat ID printed alongside the message
|
|
56
|
+
4. Add `TARGET_<NAME>=<chat_id>` to `~/.config/telegram/config`, then use `--to <name>`
|
|
57
|
+
|
|
58
|
+
## Usage Examples
|
|
59
|
+
|
|
60
|
+
### Send Messages
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Basic alert
|
|
64
|
+
bash scripts/telegram.sh send "Deploy finished ✅"
|
|
65
|
+
|
|
66
|
+
# No notification sound
|
|
67
|
+
bash scripts/telegram.sh send "low priority update" --silent
|
|
68
|
+
|
|
69
|
+
# MarkdownV2 formatting (falls back to plain text if rejected)
|
|
70
|
+
bash scripts/telegram.sh send "*bold* alert" --format md
|
|
71
|
+
|
|
72
|
+
# HTML formatting
|
|
73
|
+
bash scripts/telegram.sh send "<b>bold</b> alert" --format html
|
|
74
|
+
|
|
75
|
+
# Named target and named bot
|
|
76
|
+
bash scripts/telegram.sh send "hi" --to alerts --bot work
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Send Files
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Send a document
|
|
83
|
+
bash scripts/telegram.sh file report.pdf "Q3 report"
|
|
84
|
+
|
|
85
|
+
# Images are auto-detected and sent as photos
|
|
86
|
+
bash scripts/telegram.sh file screenshot.png "Build output"
|
|
87
|
+
|
|
88
|
+
# To a named target, silently
|
|
89
|
+
bash scripts/telegram.sh file backup.zip --to alerts --silent
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Ask and Wait for an Answer
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Default Yes/No options, 5-minute timeout
|
|
96
|
+
ANSWER=$(bash scripts/telegram.sh ask "Deploy to prod?" --options "Yes,No" --timeout 300)
|
|
97
|
+
echo "$ANSWER"
|
|
98
|
+
|
|
99
|
+
# Custom options
|
|
100
|
+
bash scripts/telegram.sh ask "Which environment?" --options "Staging,Prod,Cancel"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Exit code `0` means answered (the answer is printed to stdout); exit code `2` means the timeout was reached with no reply.
|
|
104
|
+
|
|
105
|
+
### Read Incoming Messages
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# New messages since the last read (advances the offset)
|
|
109
|
+
bash scripts/telegram.sh read
|
|
110
|
+
|
|
111
|
+
# Limit the number of messages
|
|
112
|
+
bash scripts/telegram.sh read --limit 5
|
|
113
|
+
|
|
114
|
+
# Ignore the saved offset and show everything available
|
|
115
|
+
bash scripts/telegram.sh read --all
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Note: `ask` and `read` share the same per-bot cursor, so an `ask` consumes incoming messages that a later `read` would otherwise show.
|
|
119
|
+
|
|
120
|
+
## Command Reference
|
|
121
|
+
|
|
122
|
+
| Command | Description | Arguments | Exit codes |
|
|
123
|
+
|---------|-------------|-----------|------------|
|
|
124
|
+
| `setup` | Guided bot registration + chat-ID discovery | `--bot NAME` | 0 success, 1 error |
|
|
125
|
+
| `send MESSAGE` | Send a text message | `--to TARGET`, `--bot NAME`, `--silent`, `--format md\|html` | 0 success, 1 error |
|
|
126
|
+
| `file PATH [CAPTION]` | Send a document (or photo for images) | `--to TARGET`, `--bot NAME`, `--silent` | 0 success, 1 error |
|
|
127
|
+
| `ask QUESTION` | Ask with inline buttons, wait for reply | `--options "Yes,No"`, `--timeout SECS`, `--to TARGET`, `--bot NAME` | 0 answered, 2 timeout, 1 error |
|
|
128
|
+
| `read` | Print new incoming messages since last read | `--limit N`, `--bot NAME`, `--all` | 0 success, 1 error |
|
|
129
|
+
|
|
130
|
+
## Config Reference
|
|
131
|
+
|
|
132
|
+
Environment variables take precedence; anything not set in the environment falls back to `~/.config/telegram/config` (created with mode 600):
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
TELEGRAM_BOT_TOKEN=123:ABC... # default bot token
|
|
136
|
+
TELEGRAM_CHAT_ID=987654321 # default chat/target
|
|
137
|
+
BOT_ALERTS_TOKEN=456:DEF... # named bot: --bot alerts (add via: setup --bot alerts)
|
|
138
|
+
TARGET_FAMILY=-100987... # named target: --to family (any chat/group/channel id)
|
|
139
|
+
TELEGRAM_APPROVER_IDS=123456789 # default group approver user IDs (comma-separated)
|
|
140
|
+
APPROVERS_FAMILY=123456789,987654321 # approvers for --to family (overrides default)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
- `TELEGRAM_BOT_TOKEN` / `TELEGRAM_CHAT_ID` — default bot token and default send target.
|
|
144
|
+
- `BOT_<NAME>_TOKEN` — a named bot's token, selected with `--bot <name>` (uppercased key, e.g. `--bot alerts` → `BOT_ALERTS_TOKEN`).
|
|
145
|
+
- `TARGET_<NAME>=<chat_id>` — a named send target, selected with `--to <name>` (uppercased key, e.g. `--to family` → `TARGET_FAMILY`). A numeric `--to` value is used directly as a chat ID without a lookup.
|
|
146
|
+
- `TELEGRAM_APPROVER_IDS` — Telegram user IDs allowed to answer `ask` in a group target.
|
|
147
|
+
- `APPROVERS_<NAME>` — target-specific group approvers (for example, `APPROVERS_FAMILY`); overrides the global allowlist for that named target.
|
|
148
|
+
- `TELEGRAM_CONFIG_DIR` — overrides the config directory (default `~/.config/telegram`).
|
|
149
|
+
|
|
150
|
+
## Claude Code hooks (settings.json)
|
|
151
|
+
|
|
152
|
+
Ping your phone when Claude needs input, and when it finishes:
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"hooks": {
|
|
157
|
+
"Notification": [{"hooks": [{"type": "command",
|
|
158
|
+
"command": "bash ~/.claude/skills/telegram/scripts/telegram.sh send \"🔔 Claude needs input in $(basename \\\"$PWD\\\")\""}]}],
|
|
159
|
+
"Stop": [{"hooks": [{"type": "command",
|
|
160
|
+
"command": "bash ~/.claude/skills/telegram/scripts/telegram.sh send \"✅ Claude finished in $(basename \\\"$PWD\\\")\" --silent"}]}]
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Approval gate in any script/automation:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
if [ "$(bash scripts/telegram.sh ask 'Deploy to prod?' --options 'Yes,No')" = "Yes" ]; then
|
|
169
|
+
./deploy.sh
|
|
170
|
+
fi
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Security Notes
|
|
174
|
+
|
|
175
|
+
- The bot token grants full control of the bot — anyone with it can send/receive as your bot. Treat it like a password.
|
|
176
|
+
- Token-bearing API URLs are passed to curl through stdin, not exposed in curl process arguments.
|
|
177
|
+
- `~/.config/telegram/config` is created with mode 600 (owner read/write only).
|
|
178
|
+
- Private-chat answers are accepted only when the sender user ID equals the chat ID. Group
|
|
179
|
+
targets require an explicit `TELEGRAM_APPROVER_IDS` or target-specific `APPROVERS_<NAME>`
|
|
180
|
+
allowlist, and `ask` accepts button taps and text only from those user IDs.
|
|
181
|
+
- By default, bots in group chats only see messages that mention them or are replies to them. To read all group messages, either make the bot an admin or disable privacy mode for it via @BotFather (`/setprivacy`).
|
|
182
|
+
|
|
183
|
+
## License
|
|
184
|
+
|
|
185
|
+
Apache 2.0
|