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.
Files changed (241) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +24 -1
  2. package/bundled-skills/007/SKILL.md +2 -2
  3. package/bundled-skills/10-andruia-skill-smith/SKILL.md +1 -1
  4. package/bundled-skills/agent-squad/SKILL.md +5 -0
  5. package/bundled-skills/agent-squad/alex/SKILL.md +3 -0
  6. package/bundled-skills/agent-squad/aria/SKILL.md +3 -0
  7. package/bundled-skills/agent-squad/dep/SKILL.md +3 -0
  8. package/bundled-skills/agent-squad/luna/SKILL.md +4 -1
  9. package/bundled-skills/agent-squad/mason/SKILL.md +3 -0
  10. package/bundled-skills/agent-squad/max/SKILL.md +3 -0
  11. package/bundled-skills/agent-squad/quinn/SKILL.md +3 -0
  12. package/bundled-skills/agent-squad/rex/SKILL.md +3 -0
  13. package/bundled-skills/angular/metadata.json +1 -1
  14. package/bundled-skills/angular-best-practices/metadata.json +1 -1
  15. package/bundled-skills/angular-state-management/metadata.json +1 -1
  16. package/bundled-skills/angular-ui-patterns/metadata.json +1 -1
  17. package/bundled-skills/antigravity-skill-orchestrator/SKILL.md +2 -2
  18. package/bundled-skills/apify-actor-development/SKILL.md +2 -2
  19. package/bundled-skills/apple-container/SKILL.md +165 -0
  20. package/bundled-skills/apple-container/references/commands.md +1593 -0
  21. package/bundled-skills/apple-container/references/concepts.md +294 -0
  22. package/bundled-skills/apple-container/references/configuration.md +499 -0
  23. package/bundled-skills/apple-container/references/workflows.md +498 -0
  24. package/bundled-skills/ask-copilot/SKILL.md +112 -0
  25. package/bundled-skills/auto-research/SKILL.md +126 -0
  26. package/bundled-skills/brooks-lint/SKILL.md +1 -1
  27. package/bundled-skills/browser-harness/references/install.md +3 -1
  28. package/bundled-skills/chrome-extension-developer/SKILL.md +1 -1
  29. package/bundled-skills/clean-code-guard/SKILL.md +184 -0
  30. package/bundled-skills/clean-code-guard/references/ai-failure-modes.md +345 -0
  31. package/bundled-skills/clean-code-guard/references/comments-and-formatting.md +115 -0
  32. package/bundled-skills/clean-code-guard/references/dry-kiss-yagni.md +133 -0
  33. package/bundled-skills/clean-code-guard/references/naming-and-functions.md +187 -0
  34. package/bundled-skills/clean-code-guard/references/review-checklist.md +150 -0
  35. package/bundled-skills/clean-code-guard/references/solid.md +280 -0
  36. package/bundled-skills/clean-code-guard/references/sources.md +47 -0
  37. package/bundled-skills/cloudflare-security-audit/SKILL.md +137 -0
  38. package/bundled-skills/cloudflare-security-audit/references/AI-AND-LLM.md +67 -0
  39. package/bundled-skills/cloudflare-security-audit/references/ATTACK-CLASSES.md +116 -0
  40. package/bundled-skills/cloudflare-security-audit/references/CLIENT-SIDE.md +67 -0
  41. package/bundled-skills/cloudflare-security-audit/references/HUNTING.md +110 -0
  42. package/bundled-skills/cloudflare-security-audit/references/MEMORY-SAFETY-AND-BINARY.md +58 -0
  43. package/bundled-skills/cloudflare-security-audit/references/RECONNAISSANCE.md +46 -0
  44. package/bundled-skills/cloudflare-security-audit/references/VALIDATION-AND-REPORTING.md +109 -0
  45. package/bundled-skills/cloudflare-security-audit/references/WEB-PROTOCOL-AND-AUTH.md +85 -0
  46. package/bundled-skills/cloudflare-security-audit/resources/report-schema.json +210 -0
  47. package/bundled-skills/comfyui-gateway/references/troubleshooting.md +1 -1
  48. package/bundled-skills/commit/SKILL.md +2 -1
  49. package/bundled-skills/deepapi/SKILL.md +6 -6
  50. package/bundled-skills/docs/README.md +1 -1
  51. package/bundled-skills/docs/contributors/quality-bar.md +1 -1
  52. package/bundled-skills/docs/contributors/security-guardrails.md +1 -1
  53. package/bundled-skills/docs/integrations/jetski-cortex.md +5 -5
  54. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +3 -3
  55. package/bundled-skills/docs/maintainers/ci-drift-fix.md +7 -5
  56. package/bundled-skills/docs/maintainers/merge-batch.md +24 -7
  57. package/bundled-skills/docs/maintainers/pr-autonomy.md +89 -0
  58. package/bundled-skills/docs/maintainers/release-notes-7.2.0.md +1 -1
  59. package/bundled-skills/docs/maintainers/release-process.md +9 -9
  60. package/bundled-skills/docs/maintainers/repo-growth-seo.md +5 -5
  61. package/bundled-skills/docs/maintainers/skills-date-tracking.md +1 -1
  62. package/bundled-skills/docs/maintainers/skills-update-guide.md +2 -2
  63. package/bundled-skills/docs/users/{antigravity-awesome-skills-vs-awesome-claude-skills.md → agentic-awesome-skills-vs-awesome-claude-skills.md} +5 -5
  64. package/bundled-skills/docs/users/ai-agent-skills.md +4 -4
  65. package/bundled-skills/docs/users/best-claude-code-skills-github.md +3 -3
  66. package/bundled-skills/docs/users/best-cursor-skills-github.md +3 -3
  67. package/bundled-skills/docs/users/bundles.md +56 -57
  68. package/bundled-skills/docs/users/claude-code-skills.md +6 -6
  69. package/bundled-skills/docs/users/codex-cli-skills.md +5 -5
  70. package/bundled-skills/docs/users/cursor-skills.md +3 -3
  71. package/bundled-skills/docs/users/faq.md +27 -15
  72. package/bundled-skills/docs/users/gemini-cli-skills.md +4 -4
  73. package/bundled-skills/docs/users/getting-started.md +22 -12
  74. package/bundled-skills/docs/users/kiro-integration.md +7 -7
  75. package/bundled-skills/docs/users/plugins.md +8 -9
  76. package/bundled-skills/docs/users/security-skills.md +1 -1
  77. package/bundled-skills/docs/users/skills-vs-mcp-tools.md +1 -1
  78. package/bundled-skills/docs/users/specialized-plugin-roadmap.md +3 -4
  79. package/bundled-skills/docs/users/usage.md +9 -9
  80. package/bundled-skills/docs/users/visual-guide.md +7 -7
  81. package/bundled-skills/docs/users/windows-truncation-recovery.md +1 -1
  82. package/bundled-skills/docs/users/workflows.md +1 -1
  83. package/bundled-skills/docs/vietnamese/BUNDLES.vi.md +1 -1
  84. package/bundled-skills/docs/vietnamese/FAQ.vi.md +15 -8
  85. package/bundled-skills/docs/vietnamese/GETTING_STARTED.vi.md +12 -5
  86. package/bundled-skills/docs/vietnamese/QUALITY_BAR.vi.md +1 -1
  87. package/bundled-skills/docs/vietnamese/README.vi.md +21 -17
  88. package/bundled-skills/docs/vietnamese/SECURITY_GUARDRAILS.vi.md +1 -1
  89. package/bundled-skills/docs/vietnamese/SKILLS_README.vi.md +2 -2
  90. package/bundled-skills/docs/vietnamese/TRANSLATION_PLAN.vi.md +1 -1
  91. package/bundled-skills/docs/vietnamese/VISUAL_GUIDE.vi.md +8 -8
  92. package/bundled-skills/docs-guard/SKILL.md +109 -0
  93. package/bundled-skills/docs-guard/references/code-samples.md +46 -0
  94. package/bundled-skills/docs-guard/references/docstrings.md +60 -0
  95. package/bundled-skills/docs-guard/references/review-checklist.md +45 -0
  96. package/bundled-skills/docs-guard/references/sources.md +22 -0
  97. package/bundled-skills/docs-guard/references/verification.md +51 -0
  98. package/bundled-skills/efficient-web-research/SKILL.md +4 -0
  99. package/bundled-skills/electron-development/SKILL.md +1 -1
  100. package/bundled-skills/event-staffing-compliance/SKILL.md +3 -0
  101. package/bundled-skills/event-staffing-ordering/SKILL.md +3 -0
  102. package/bundled-skills/feature-tracking/SKILL.md +222 -0
  103. package/bundled-skills/flutter-expert/SKILL.md +6 -1
  104. package/bundled-skills/flutter-expert/resources/implementation-playbook.md +214 -0
  105. package/bundled-skills/gemini-deep-research/README.md +246 -0
  106. package/bundled-skills/gemini-deep-research/SKILL.md +136 -0
  107. package/bundled-skills/gemini-deep-research/requirements.txt +2 -0
  108. package/bundled-skills/gemini-deep-research/scripts/research.py +692 -0
  109. package/bundled-skills/git-pushing/SKILL.md +21 -4
  110. package/bundled-skills/git-pushing/scripts/smart_commit.sh +206 -11
  111. package/bundled-skills/go-in-depth/scripts/workflow-script.js +4 -1
  112. package/bundled-skills/grok-build/SKILL.md +167 -0
  113. package/bundled-skills/grok-build/references/cli.md +99 -0
  114. package/bundled-skills/huggingface-tool-builder/references/find_models_by_paper.sh +1 -1
  115. package/bundled-skills/idea-autopsy/SKILL.md +147 -0
  116. package/bundled-skills/it-manager-hospital/README.md +1 -1
  117. package/bundled-skills/it-manager-pro/README.md +1 -1
  118. package/bundled-skills/itil-expert/README.md +1 -1
  119. package/bundled-skills/langgraph/SKILL.md +1 -1
  120. package/bundled-skills/linkedin-content-generator/SKILL.md +1 -1
  121. package/bundled-skills/lint-and-validate/scripts/lint_runner.py +23 -23
  122. package/bundled-skills/lint-and-validate/scripts/type_coverage.py +30 -30
  123. package/bundled-skills/logic-lens/SKILL.md +1 -1
  124. package/bundled-skills/lore/LICENSE +21 -0
  125. package/bundled-skills/lore/README.md +386 -0
  126. package/bundled-skills/lore/README.zh-CN.md +386 -0
  127. package/bundled-skills/lore/SKILL.md +453 -0
  128. package/bundled-skills/lore/WORKFLOWS.md +216 -0
  129. package/bundled-skills/lore/WORKFLOWS.zh-CN.md +216 -0
  130. package/bundled-skills/lore/references/audit-template.md +60 -0
  131. package/bundled-skills/lore/references/compatibility.md +228 -0
  132. package/bundled-skills/lore/references/config.md +125 -0
  133. package/bundled-skills/lore/references/entry-format.md +70 -0
  134. package/bundled-skills/lore/references/history-command.md +106 -0
  135. package/bundled-skills/lore/references/monorepo-detection.md +78 -0
  136. package/bundled-skills/lore/references/platform-mirrors.md +377 -0
  137. package/bundled-skills/lore/references/stale-new-markers.md +62 -0
  138. package/bundled-skills/lore/references/summary-template.md +98 -0
  139. package/bundled-skills/lore/scripts/README.md +54 -0
  140. package/bundled-skills/lore/scripts/README.zh-CN.md +54 -0
  141. package/bundled-skills/lore/scripts/find_duplicates.py +211 -0
  142. package/bundled-skills/lore/scripts/find_stale.py +116 -0
  143. package/bundled-skills/lore/scripts/history.py +527 -0
  144. package/bundled-skills/lore/scripts/id_hash.py +32 -0
  145. package/bundled-skills/lore/scripts/list_entries.py +183 -0
  146. package/bundled-skills/lovable-cleanup/SKILL.md +3 -3
  147. package/bundled-skills/makepad-splash/SKILL.md +1 -1
  148. package/bundled-skills/mmx-cli/SKILL.md +14 -1
  149. package/bundled-skills/monopoly/SKILL.md +5 -0
  150. package/bundled-skills/monopoly/patterns/SKILL.md +4 -0
  151. package/bundled-skills/monopoly/scale-benchmarks/SKILL.md +4 -0
  152. package/bundled-skills/monopoly/security-checklist/SKILL.md +4 -0
  153. package/bundled-skills/monopoly/tech-matrix/SKILL.md +4 -0
  154. package/bundled-skills/mtls-configuration/SKILL.md +1 -1
  155. package/bundled-skills/network-101/SKILL.md +4 -5
  156. package/bundled-skills/nika/SKILL.md +270 -0
  157. package/bundled-skills/not-a-vibe-coder/SKILL.md +4 -0
  158. package/bundled-skills/ontoly-software-graph/SKILL.md +160 -0
  159. package/bundled-skills/openclaw-github-repo-commander/SKILL.md +1 -1
  160. package/bundled-skills/pilot-protocol/SKILL.md +6 -3
  161. package/bundled-skills/postgres-readonly-queries/README.md +77 -0
  162. package/bundled-skills/postgres-readonly-queries/SKILL.md +152 -0
  163. package/bundled-skills/postgres-readonly-queries/connections.example.json +34 -0
  164. package/bundled-skills/postgres-readonly-queries/requirements.txt +1 -0
  165. package/bundled-skills/postgres-readonly-queries/scripts/query.py +262 -0
  166. package/bundled-skills/pptx-deck-creation/SKILL.md +275 -0
  167. package/bundled-skills/pptx-deck-creation/references/audit-checklist.md +156 -0
  168. package/bundled-skills/pptx-deck-creation/references/design-profiles.md +96 -0
  169. package/bundled-skills/pptx-deck-creation/references/python-snippets.md +150 -0
  170. package/bundled-skills/pptx-deck-creation/references/reference-deck-analysis.md +91 -0
  171. package/bundled-skills/pptx-deck-creation/references/visual-asset-adapters.md +158 -0
  172. package/bundled-skills/privilege-escalation-methods/SKILL.md +1 -1
  173. package/bundled-skills/product-decision-agent/SKILL.md +94 -0
  174. package/bundled-skills/product-decision-agent/agents/openai.yaml +7 -0
  175. package/bundled-skills/product-decision-agent/references/methodology-basis.md +232 -0
  176. package/bundled-skills/product-decision-agent/references/product-playbooks.md +813 -0
  177. package/bundled-skills/product-decision-agent/references/reasoning-engine.md +289 -0
  178. package/bundled-skills/product-decision-agent/references/response-examples.md +279 -0
  179. package/bundled-skills/product-decision-agent/scripts/quality_gate.py +221 -0
  180. package/bundled-skills/product-decision-agent/scripts/test_quality_gate.py +94 -0
  181. package/bundled-skills/pytest-skill/reference/playbook.md +358 -0
  182. package/bundled-skills/quit-sponsor/SKILL.md +96 -0
  183. package/bundled-skills/rclone-cli/references/providers/s3.md +1 -1
  184. package/bundled-skills/security-and-hardening/SKILL.md +1 -1
  185. package/bundled-skills/semgrep-rule-creator/SKILL.md +6 -6
  186. package/bundled-skills/skill-creator/README.md +3 -3
  187. package/bundled-skills/skill-creator/SKILL.md +8 -4
  188. package/bundled-skills/skill-creator/scripts/quick_validate.py +1 -1
  189. package/bundled-skills/sql-injection-testing/SKILL.md +4 -4
  190. package/bundled-skills/subagent-orchestrator/README.md +1 -1
  191. package/bundled-skills/super-code/bash/SKILL.md +3 -0
  192. package/bundled-skills/super-code/c/SKILL.md +3 -0
  193. package/bundled-skills/super-code/cpp/SKILL.md +3 -0
  194. package/bundled-skills/super-code/csharp/SKILL.md +3 -0
  195. package/bundled-skills/super-code/dart/SKILL.md +3 -0
  196. package/bundled-skills/super-code/elixir/SKILL.md +3 -0
  197. package/bundled-skills/super-code/go/SKILL.md +3 -0
  198. package/bundled-skills/super-code/java/SKILL.md +3 -0
  199. package/bundled-skills/super-code/kotlin/SKILL.md +3 -0
  200. package/bundled-skills/super-code/php/SKILL.md +3 -0
  201. package/bundled-skills/super-code/python/SKILL.md +3 -0
  202. package/bundled-skills/super-code/ruby/SKILL.md +3 -0
  203. package/bundled-skills/super-code/rust/SKILL.md +3 -0
  204. package/bundled-skills/super-code/scala/SKILL.md +3 -0
  205. package/bundled-skills/super-code/swift/SKILL.md +3 -0
  206. package/bundled-skills/super-code/typescript/SKILL.md +3 -0
  207. package/bundled-skills/telegram-bot-messaging/README.md +185 -0
  208. package/bundled-skills/telegram-bot-messaging/SKILL.md +101 -0
  209. package/bundled-skills/telegram-bot-messaging/scripts/telegram.sh +420 -0
  210. package/bundled-skills/test-guard/SKILL.md +132 -0
  211. package/bundled-skills/test-guard/references/jest.md +50 -0
  212. package/bundled-skills/test-guard/references/llm-app-testing.md +40 -0
  213. package/bundled-skills/test-guard/references/phpunit.md +56 -0
  214. package/bundled-skills/test-guard/references/pytest.md +65 -0
  215. package/bundled-skills/trading-ledger/SKILL.md +11 -3
  216. package/bundled-skills/uizze-ui-research/SKILL.md +93 -0
  217. package/bundled-skills/vibe-code-auditor/SKILL.md +1 -1
  218. package/bundled-skills/vibecode-production-qa-validator/SKILL.md +1 -1
  219. package/bundled-skills/videodb/scripts/ws_listener.py +29 -15
  220. package/bundled-skills/voice-ai-engine-development/README.md +1 -1
  221. package/bundled-skills/vulnerability-scanner/SKILL.md +1 -1
  222. package/bundled-skills/warehouse/SKILL.md +154 -0
  223. package/bundled-skills/woo-guard/SKILL.md +113 -0
  224. package/bundled-skills/woo-guard/references/checkout-and-money.md +64 -0
  225. package/bundled-skills/woo-guard/references/hpos-and-crud.md +87 -0
  226. package/bundled-skills/woo-guard/references/review-checklist.md +44 -0
  227. package/bundled-skills/woo-guard/references/sources.md +17 -0
  228. package/bundled-skills/wp-guard/SKILL.md +119 -0
  229. package/bundled-skills/wp-guard/references/i18n.md +88 -0
  230. package/bundled-skills/wp-guard/references/performance.md +70 -0
  231. package/bundled-skills/wp-guard/references/review-checklist.md +57 -0
  232. package/bundled-skills/wp-guard/references/security.md +100 -0
  233. package/bundled-skills/wp-guard/references/sources.md +27 -0
  234. package/bundled-skills/writing-skills/gotchas.md +1 -1
  235. package/bundled-skills/writing-skills/references/standards/metadata-standard.md +1 -1
  236. package/bundled-skills/x-twitter-scraper/SKILL.md +14 -32
  237. package/bundled-skills/xss-html-injection/SKILL.md +3 -3
  238. package/bundled-skills/youtube-seo-optimizer/SKILL.md +1 -1
  239. package/bundled-skills/youtube-summarizer/CHANGELOG.md +2 -2
  240. package/package.json +1 -1
  241. 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
 
@@ -101,7 +101,7 @@ if __name__ == "__main__":
101
101
  if len(sys.argv) != 2:
102
102
  print("Usage: python quick_validate.py <skill_directory>")
103
103
  sys.exit(1)
104
-
104
+
105
105
  valid, message = validate_skill(sys.argv[1])
106
106
  print(message)
107
107
  sys.exit(0 if valid else 1)
@@ -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/antigravity-awesome-skills
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