@xiaotianxt/skills 0.1.0

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 (120) hide show
  1. package/EXCLUDED.md +42 -0
  2. package/LICENSE +21 -0
  3. package/README.md +165 -0
  4. package/SECURITY.md +23 -0
  5. package/SOURCES.md +45 -0
  6. package/bin/skills.mjs +241 -0
  7. package/package.json +38 -0
  8. package/skills/1password/SKILL.md +94 -0
  9. package/skills/1password/agents/openai.yaml +4 -0
  10. package/skills/1password/references/item-management.md +80 -0
  11. package/skills/1password/references/op-cli.md +107 -0
  12. package/skills/apple-calendar-event/SKILL.md +81 -0
  13. package/skills/apple-calendar-event/agents/openai.yaml +4 -0
  14. package/skills/apple-calendar-event/scripts/calendar_audit.py +201 -0
  15. package/skills/apple-calendar-event/scripts/calendar_event.py +164 -0
  16. package/skills/bro-browser/SKILL.md +118 -0
  17. package/skills/bro-browser/agents/openai.yaml +4 -0
  18. package/skills/bro-browser/references/tool-map.md +102 -0
  19. package/skills/bro-browser/references/workflows.md +146 -0
  20. package/skills/bro-browser/scripts/bro-call.mjs +189 -0
  21. package/skills/calendar/SKILL.md +182 -0
  22. package/skills/calendar/agents/openai.yaml +4 -0
  23. package/skills/calendar/references/operations.md +255 -0
  24. package/skills/calendar/scripts/calendar_list_review.py +157 -0
  25. package/skills/calendar/scripts/event_dedupe_preview.py +155 -0
  26. package/skills/canvas/SKILL.md +70 -0
  27. package/skills/canvas/agents/openai.yaml +4 -0
  28. package/skills/canvas/references/canvas-api.md +76 -0
  29. package/skills/course-exam-review-planner/SKILL.md +127 -0
  30. package/skills/cx/SKILL.md +25 -0
  31. package/skills/gh-fix-ci/LICENSE.txt +201 -0
  32. package/skills/gh-fix-ci/SKILL.md +81 -0
  33. package/skills/gh-fix-ci/agents/openai.yaml +6 -0
  34. package/skills/gh-fix-ci/assets/github-small.svg +3 -0
  35. package/skills/gh-fix-ci/assets/github.png +0 -0
  36. package/skills/gh-fix-ci/scripts/inspect_pr_checks.py +509 -0
  37. package/skills/gh-review-workflow/SKILL.md +61 -0
  38. package/skills/gh-review-workflow/agents/openai.yaml +4 -0
  39. package/skills/gh-review-workflow/references/workflow.md +48 -0
  40. package/skills/gh-review-workflow/scripts/fetch_review_state.py +222 -0
  41. package/skills/gh-review-workflow/scripts/resolve_review_threads.py +83 -0
  42. package/skills/github/SKILL.md +74 -0
  43. package/skills/github/agents/openai.yaml +6 -0
  44. package/skills/github/assets/github-small.svg +3 -0
  45. package/skills/github/assets/github.png +0 -0
  46. package/skills/gws-calendar/SKILL.md +126 -0
  47. package/skills/gws-calendar-agenda/SKILL.md +52 -0
  48. package/skills/gws-calendar-insert/SKILL.md +66 -0
  49. package/skills/gws-docs/SKILL.md +48 -0
  50. package/skills/gws-docs-write/SKILL.md +49 -0
  51. package/skills/gws-drive/SKILL.md +137 -0
  52. package/skills/gws-drive-upload/SKILL.md +52 -0
  53. package/skills/gws-gmail/SKILL.md +62 -0
  54. package/skills/gws-gmail-forward/SKILL.md +55 -0
  55. package/skills/gws-gmail-reply/SKILL.md +58 -0
  56. package/skills/gws-gmail-reply-all/SKILL.md +62 -0
  57. package/skills/gws-gmail-send/SKILL.md +57 -0
  58. package/skills/gws-gmail-triage/SKILL.md +50 -0
  59. package/skills/gws-gmail-watch/SKILL.md +58 -0
  60. package/skills/gws-shared/SKILL.md +27 -0
  61. package/skills/helium-browser-mcp/SKILL.md +137 -0
  62. package/skills/helium-browser-mcp/agents/openai.yaml +4 -0
  63. package/skills/helium-browser-mcp/scripts/obmcp.mjs +92 -0
  64. package/skills/helium-browser-mcp/scripts/openbrowsermcp-stdio-proxy.mjs +170 -0
  65. package/skills/learn/SKILL.md +122 -0
  66. package/skills/learn/agents/openai.yaml +7 -0
  67. package/skills/learn/assets/AGENTS.template.md +33 -0
  68. package/skills/learn/assets/errorlog.template.typ +61 -0
  69. package/skills/learn/assets/reading-sequence.template.md +23 -0
  70. package/skills/learn/assets/source-index.template.md +17 -0
  71. package/skills/learn/assets/tasklog.template.typ +57 -0
  72. package/skills/learn/assets/workbook.template.typ +60 -0
  73. package/skills/learn/references/learning-science.md +103 -0
  74. package/skills/learn/scripts/init_learning_workspace.py +70 -0
  75. package/skills/macos-messages/SKILL.md +258 -0
  76. package/skills/memory/SKILL.md +33 -0
  77. package/skills/memory/codex.md +186 -0
  78. package/skills/memory/opencode.md +164 -0
  79. package/skills/mimestreamctl/SKILL.md +170 -0
  80. package/skills/mimestreamctl/agents/openai.yaml +4 -0
  81. package/skills/mimestreamctl/scripts/mimestreamctl +33 -0
  82. package/skills/mon/SKILL.md +51 -0
  83. package/skills/mon/scripts/mon_spend_review.py +458 -0
  84. package/skills/ocr/SKILL.md +136 -0
  85. package/skills/ocr/agents/openai.yaml +4 -0
  86. package/skills/ocr/references/local-ocr-best-practices.md +297 -0
  87. package/skills/ocr/references/mineru-api.md +159 -0
  88. package/skills/ocr/scripts/ocr-router +22 -0
  89. package/skills/ocr/scripts/ocr_router.py +741 -0
  90. package/skills/panopto-mp4-bulk-download/SKILL.md +57 -0
  91. package/skills/panopto-mp4-bulk-download/agents/openai.yaml +4 -0
  92. package/skills/panopto-mp4-bulk-download/references/url-patterns.md +26 -0
  93. package/skills/panopto-mp4-bulk-download/scripts/panopto_bulk_mp4.sh +213 -0
  94. package/skills/rust-systems-style/SKILL.md +109 -0
  95. package/skills/rust-systems-style/agents/openai.yaml +4 -0
  96. package/skills/rust-systems-style/references/rust-review-checklist.md +77 -0
  97. package/skills/rust-systems-style/references/style-sources.md +68 -0
  98. package/skills/ship-ai-native-cli/SKILL.md +76 -0
  99. package/skills/ship-ai-native-cli/agents/openai.yaml +4 -0
  100. package/skills/ship-ai-native-cli/references/case-notes.md +83 -0
  101. package/skills/ship-ai-native-cli/references/product-method.md +82 -0
  102. package/skills/ship-ai-native-cli/references/release-checklist.md +147 -0
  103. package/skills/ship-ai-native-cli/references/rust-cli-shape.md +111 -0
  104. package/skills/telegram-mtproto-session/SKILL.md +125 -0
  105. package/skills/telegram-mtproto-session/agents/openai.yaml +4 -0
  106. package/skills/telegram-mtproto-session/scripts/telegram_session.py +687 -0
  107. package/skills/tg/SKILL.md +173 -0
  108. package/skills/things3-manager/SKILL.md +116 -0
  109. package/skills/things3-manager/scripts/things +42 -0
  110. package/skills/things3-manager/scripts/things_cli.py +514 -0
  111. package/skills/web-artifacts-builder/LICENSE.txt +202 -0
  112. package/skills/web-artifacts-builder/SKILL.md +74 -0
  113. package/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  114. package/skills/web-artifacts-builder/scripts/init-artifact.sh +379 -0
  115. package/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  116. package/skills/yeet/LICENSE.txt +201 -0
  117. package/skills/yeet/SKILL.md +71 -0
  118. package/skills/yeet/agents/openai.yaml +6 -0
  119. package/skills/yeet/assets/yeet-small.svg +3 -0
  120. package/skills/yeet/assets/yeet.png +0 -0
@@ -0,0 +1,173 @@
1
+ ---
2
+ name: tg
3
+ description: Use when the user wants to read, search, inspect, back up, export, or troubleshoot local macOS Telegram chat history with tg. Keep the user's chat data local and guide them through the shortest working tg command flow.
4
+ when_to_use: Trigger for requests mentioning Telegram聊天记录, Telegram聊天, Telegram群, Telegram里, local chat backup, message search, message export, or troubleshooting why local chat history cannot be read.
5
+ ---
6
+
7
+ # tg
8
+
9
+ Canonical source: https://github.com/xiaotianxt/skills/tree/main/skills/tg
10
+
11
+ ## When To Use
12
+
13
+ Use this skill for user goals like:
14
+
15
+ - "帮我读一下和某个人的Telegram聊天记录"
16
+ - "查Telegram里有没有某个关键词"
17
+ - "导出这个Telegram群的聊天记录"
18
+ - "把Telegram聊天备份成 json/csv/txt"
19
+ - "为什么本机Telegram聊天记录读不出来"
20
+
21
+ Do not wait for the user to name tg. tg is the tool; the user goal is local macOS Telegram history access.
22
+
23
+ ## Privacy
24
+
25
+ Chat data is private. Keep work local by default, avoid printing more message content than the user asked for, and treat exports as sensitive.
26
+ For summary requests, choose display names by the target. If the user clearly names a 1-on-1 person, omit `--anonymous` so the summary uses the user's intended name for that person. If the target is a group chat, a room, a global search, or the target type is unclear, use `--anonymous` whenever the command supports it to avoid exposing personal contact remarks in assistant-visible output and exported sender names.
27
+ `~/.tg/all_keys.json` and `~/.tg/decrypted/` are sensitive local state. `~/.tg/decrypted/.tg_index.db` is a local derived hot index maintained by `tg refresh`; treat it as sensitive and safe to delete if it needs to be rebuilt.
28
+
29
+ ## First Setup
30
+
31
+ For a fresh setup, ask the user to open and log in to macOS Telegram first.
32
+
33
+ If tg needs permission to access the desktop app, have the user quit Telegram and run:
34
+
35
+ ```bash
36
+ sudo codesign --force --deep --sign - /Applications/Telegram.app
37
+ ```
38
+
39
+ If Telegram is installed somewhere else, use that `.app` path instead.
40
+
41
+ Then run:
42
+
43
+ ```bash
44
+ sudo tg keys
45
+ tg refresh
46
+ tg sessions --top 50
47
+ tg "联系人" --limit 50
48
+ tg "群名" --limit 50 --anonymous
49
+ ```
50
+
51
+ ## Common Commands
52
+
53
+ Install:
54
+
55
+ ```bash
56
+ brew install xiaotianxt/tap/tg
57
+ tg --version
58
+ ```
59
+
60
+ Find a chat:
61
+
62
+ ```bash
63
+ tg sessions "张三"
64
+ tg sessions --top 50
65
+ ```
66
+
67
+ Read a chat:
68
+
69
+ ```bash
70
+ tg "张三"
71
+ tg "张三" --limit 100
72
+ tg messages "张三" --limit 100
73
+ tg messages "张三" --since today
74
+ tg messages "张三" --all-time
75
+ tg messages "张三" --search "关键词"
76
+ tg messages "张三" --head --limit 20
77
+ tg messages "张三" --tail --limit 20
78
+ tg messages "产品讨论群" --limit 100 --anonymous
79
+ ```
80
+
81
+ Search globally:
82
+
83
+ ```bash
84
+ tg search "关键词" --limit 50 --anonymous
85
+ tg search "关键词" --since today --anonymous
86
+ tg search "关键词" --all-time --anonymous
87
+ ```
88
+
89
+ Use structured lookup when the user wants precise filters, multiple keywords,
90
+ excluded words, selected output fields, or JSON lines for a local analysis step.
91
+ This is not a raw SQL interface; pass user intent as filters:
92
+
93
+ ```bash
94
+ tg query --contains "关键词" --limit 50 --anonymous
95
+ tg query --session "张三" --contains "关键词" --fields time,sender,body --limit 20
96
+ tg query --session "产品讨论群" --contains "关键词" --fields time,sender,body --limit 20 --anonymous
97
+ tg query --contains "项目" --contains "上线" --match-mode all --since today --anonymous
98
+ tg query --contains "项目" --not "已取消" --format json --fields timestamp,session,body --anonymous
99
+ tg query --contains "项目" --all-time --anonymous
100
+ tg schema --db message_0
101
+ ```
102
+
103
+ Use `tg schema` when the user asks what `query` can return or filter on. It
104
+ shows the public query contract, not raw database table or column names.
105
+
106
+ Query safety rules:
107
+
108
+ - `search`, `query`, and `export` default to the recent 365-day window; use `--all-time` only when the user asks for full history.
109
+ - With `--all-time`, `query` requires at least `--contains` or `--since`.
110
+ - Empty `--contains` / `--not` values are rejected.
111
+ - Use `--session`, `--since`, and a reasonable `--limit` when results could be large.
112
+ - Table output escapes terminal control characters; use `--format json` for machine parsing.
113
+
114
+ Refresh or diagnose:
115
+
116
+ ```bash
117
+ tg refresh
118
+ tg refresh --keys
119
+ tg doctor
120
+ tg doctor "张三"
121
+ ```
122
+
123
+ Export:
124
+
125
+ ```bash
126
+ tg export "张三" --format txt
127
+ tg export "张三" --format csv --since 30d --output exported/zhangsan
128
+ tg export "张三" --format json --limit 1000 --output exported/zhangsan
129
+ tg export "张三" --format json --all-time --output exported/zhangsan
130
+ tg export "产品讨论群" --format json --output exported/group --media-dir exported/group/media --anonymous
131
+ ```
132
+
133
+ Export cached images:
134
+
135
+ ```bash
136
+ tg image "张三" --list --limit 20
137
+ tg image "张三" --index 3
138
+ tg image "张三" --all --limit 10 --output exported/images
139
+ ```
140
+
141
+ Export cached voice messages:
142
+
143
+ ```bash
144
+ tg voice "张三" --list --limit 20
145
+ tg voice "张三" --id 123
146
+ tg voice "张三" --index 3
147
+ tg voice "张三" --all --limit 10 --output exported/voices
148
+ tg voice "张三" --id 123 --format wav
149
+ ```
150
+
151
+ Time filters support dates, datetimes, and relative values:
152
+
153
+ ```bash
154
+ --since 2026-04-28
155
+ --since "2026-04-28 09:30:00"
156
+ --since 5min
157
+ --since 1h
158
+ --since 1y
159
+ --since today
160
+ --since yesterday
161
+ ```
162
+
163
+ Date, datetime, and displayed message times use the current system time zone.
164
+
165
+ ## Troubleshooting
166
+
167
+ - `Telegram is not running`: open and log in to macOS Telegram, then run `sudo tg keys`.
168
+ - `task_for_pid failed`: quit Telegram, run `sudo codesign --force --deep --sign - /Applications/Telegram.app`, reopen Telegram, then run `sudo tg keys`.
169
+ - No chats or messages found: run `tg refresh --keys`, then `tg sessions --top 50`.
170
+ - Wrong chat matched: use `tg sessions --top 100` and rerun with the exact `tgid_...` or `...@chatroom`.
171
+ - Missing media: open or download the media in Telegram first, then retry `tg image` or `tg export --media-dir ...`.
172
+ - Voice output defaults to normalized `.voice`; use `tg voice ... --format wav` after installing a compatible native voice decoder.
173
+ - Unknown issue: run `tg doctor` or `tg doctor "联系人或群名"` and follow the result.
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: things3-manager
3
+ description: Manage Things 3 on macOS through the official Things URL scheme. Use when asked to add, batch-import, update, show, search, or programmatically locate existing open to-dos/projects in Things, especially when an auth token should be injected from an env file.
4
+ ---
5
+
6
+ # Things 3 Manager
7
+
8
+ Use this skill for Things 3 automation on macOS.
9
+
10
+ ## Quick start
11
+
12
+ - Requirements:
13
+ - Things 3 is installed.
14
+ - In Things -> Settings -> General, "Enable Things URLs" is enabled.
15
+ - Global install path:
16
+ - `~/.codex/skills/things3-manager/`
17
+ - Global mutable state:
18
+ - `~/.codex/skills-data/things3-manager/.env`
19
+ - Main CLI:
20
+ - `bash ~/.codex/skills/things3-manager/scripts/things --help`
21
+
22
+ ## Token handling
23
+
24
+ - The wrapper auto-sources `~/.codex/skills-data/things3-manager/.env`.
25
+ - Store the Things auth token as `THINGS_AUTH_TOKEN=...` in that file.
26
+ - You can also override it per command with `THINGS_AUTH_TOKEN=... bash .../things ...` or `--auth-token ...`.
27
+ - `update-*` commands always require a token.
28
+ - `json` only requires a token when the JSON contains update operations.
29
+
30
+ ## Workflow
31
+
32
+ - Prefer `--dry-run` first for large batch imports.
33
+ - Use `json --data-file ...` for big imports with projects/headings/to-dos.
34
+ - For the Things `json` command, the file must contain a top-level JSON array of Things objects, for example `[{"type":"project","attributes":{...}}]`. Do not wrap it in an object like `{"items":[...]}`; Things may accept the URL but silently create nothing.
35
+ - Use `add-todo` or `add-project` for one-off items.
36
+ - Use `show`, `search`, `find-open-todos`, or `version` for non-destructive actions.
37
+ - For updates to existing items, resolve the item `id` first with `find-open-todos`, then call `update-todo` or `update-project`.
38
+ - For reminder-only changes on existing tasks, keep the same date and pass `--when YYYY-MM-DD@HH:MM`. The public URI uses the `when` field to set both the start date and the reminder time.
39
+ - If the requested reminder time is already in the past for that date, Things removes the reminder instead of keeping it.
40
+ - `search` only opens Things UI search. Use `find-open-todos` when you need machine-readable ids and dates for follow-up updates.
41
+ - Before write operations, summarize the exact changes and confirm unless the user has already explicitly asked you to perform them.
42
+
43
+ ## Commands
44
+
45
+ - `add-todo`
46
+ - `add-project`
47
+ - `update-todo`
48
+ - `update-project`
49
+ - `json`
50
+ - `show`
51
+ - `search`
52
+ - `find-open-todos`
53
+ - `version`
54
+ - `set-token`
55
+ - `print-config`
56
+
57
+ ## Examples
58
+
59
+ ```bash
60
+ bash ~/.codex/skills/things3-manager/scripts/things add-todo \
61
+ --title "Book flights" \
62
+ --when 2026-03-25@18:00 \
63
+ --deadline 2026-03-25
64
+ ```
65
+
66
+ ```bash
67
+ bash ~/.codex/skills/things3-manager/scripts/things json \
68
+ --data-file /tmp/things-import.json \
69
+ --reveal
70
+ ```
71
+
72
+ `/tmp/things-import.json` must look like:
73
+
74
+ ```json
75
+ [
76
+ {
77
+ "type": "project",
78
+ "attributes": {
79
+ "title": "Example Project",
80
+ "items": [
81
+ {
82
+ "type": "heading",
83
+ "attributes": {
84
+ "title": "First Section"
85
+ }
86
+ },
87
+ {
88
+ "type": "to-do",
89
+ "attributes": {
90
+ "title": "First task"
91
+ }
92
+ }
93
+ ]
94
+ }
95
+ }
96
+ ]
97
+ ```
98
+
99
+ ```bash
100
+ bash ~/.codex/skills/things3-manager/scripts/things find-open-todos \
101
+ --project "17629 Assignments" \
102
+ --title-contains "In-Class Exercise" \
103
+ --json
104
+ ```
105
+
106
+ ```bash
107
+ bash ~/.codex/skills/things3-manager/scripts/things update-todo \
108
+ --id 3h8S39kz63CjXEqJ3aJw3m \
109
+ --when 2026-03-26@12:30 \
110
+ --dry-run
111
+ ```
112
+
113
+ ```bash
114
+ bash ~/.codex/skills/things3-manager/scripts/things set-token \
115
+ --token "$THINGS_AUTH_TOKEN"
116
+ ```
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ SKILL_NAME="things3-manager"
5
+ SKILL_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
6
+ SKILL_DATA_DIR="${CODEX_SKILLS_DATA_DIR:-$HOME/.codex/skills-data/$SKILL_NAME}"
7
+ ENV_FILE="$SKILL_DATA_DIR/.env"
8
+
9
+ mkdir -p "$SKILL_DATA_DIR" "$SKILL_DATA_DIR/logs" "$SKILL_DATA_DIR/tmp"
10
+
11
+ if [[ ! -f "$ENV_FILE" ]]; then
12
+ cat >"$ENV_FILE" <<EOF
13
+ THINGS_AUTH_TOKEN=""
14
+ THINGS_APP_BUNDLE_ID="com.culturedcode.ThingsMac"
15
+ EOF
16
+ fi
17
+
18
+ EXTERNAL_THINGS_AUTH_TOKEN="${THINGS_AUTH_TOKEN:-}"
19
+ EXTERNAL_THINGS_APP_BUNDLE_ID="${THINGS_APP_BUNDLE_ID:-}"
20
+
21
+ # shellcheck disable=SC1090
22
+ source "$ENV_FILE"
23
+
24
+ SKILL_NAME="things3-manager"
25
+ SKILL_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
26
+ SKILL_DATA_DIR="${CODEX_SKILLS_DATA_DIR:-$HOME/.codex/skills-data/$SKILL_NAME}"
27
+
28
+ if [[ -n "$EXTERNAL_THINGS_AUTH_TOKEN" ]]; then
29
+ THINGS_AUTH_TOKEN="$EXTERNAL_THINGS_AUTH_TOKEN"
30
+ fi
31
+
32
+ if [[ -n "$EXTERNAL_THINGS_APP_BUNDLE_ID" ]]; then
33
+ THINGS_APP_BUNDLE_ID="$EXTERNAL_THINGS_APP_BUNDLE_ID"
34
+ fi
35
+
36
+ export SKILL_NAME
37
+ export SKILL_ROOT
38
+ export SKILL_DATA_DIR
39
+ export THINGS_AUTH_TOKEN
40
+ export THINGS_APP_BUNDLE_ID
41
+
42
+ exec python3 "$SKILL_ROOT/scripts/things_cli.py" "$@"