mindforge-cc 11.5.0 → 11.6.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 (177) hide show
  1. package/.agent/mindforge/skill-tdd.md +53 -0
  2. package/.agent/mindforge/skills-index.md +118 -0
  3. package/.agent/mindforge/systematic-debug.md +60 -0
  4. package/.agent/skills/1password-skill/SKILL.md +156 -0
  5. package/.agent/skills/1password-skill/references/cli-examples.md +31 -0
  6. package/.agent/skills/1password-skill/references/get-started.md +21 -0
  7. package/.agent/skills/article-illustrator/SKILL.md +199 -0
  8. package/.agent/skills/article-illustrator/references/prompt-construction.md +426 -0
  9. package/.agent/skills/article-illustrator/references/style-presets.md +80 -0
  10. package/.agent/skills/article-illustrator/references/styles.md +224 -0
  11. package/.agent/skills/article-illustrator/references/usage.md +50 -0
  12. package/.agent/skills/article-illustrator/references/workflow.md +332 -0
  13. package/.agent/skills/arxiv/SKILL.md +275 -0
  14. package/.agent/skills/blogwatcher/SKILL.md +130 -0
  15. package/.agent/skills/code-wiki/SKILL.md +438 -0
  16. package/.agent/skills/code-wiki/templates/README.md +31 -0
  17. package/.agent/skills/code-wiki/templates/architecture.md +30 -0
  18. package/.agent/skills/code-wiki/templates/getting-started.md +47 -0
  19. package/.agent/skills/code-wiki/templates/module.md +38 -0
  20. package/.agent/skills/codebase-inspection/SKILL.md +109 -0
  21. package/.agent/skills/comic-creator/SKILL.md +240 -0
  22. package/.agent/skills/comic-creator/references/analysis-framework.md +176 -0
  23. package/.agent/skills/comic-creator/references/auto-selection.md +71 -0
  24. package/.agent/skills/comic-creator/references/base-prompt.md +98 -0
  25. package/.agent/skills/comic-creator/references/character-template.md +180 -0
  26. package/.agent/skills/comic-creator/references/ohmsha-guide.md +85 -0
  27. package/.agent/skills/comic-creator/references/partial-workflows.md +106 -0
  28. package/.agent/skills/comic-creator/references/storyboard-template.md +143 -0
  29. package/.agent/skills/comic-creator/references/workflow.md +401 -0
  30. package/.agent/skills/concept-diagrams/SKILL.md +355 -0
  31. package/.agent/skills/concept-diagrams/references/dashboard-patterns.md +43 -0
  32. package/.agent/skills/concept-diagrams/references/infrastructure-patterns.md +144 -0
  33. package/.agent/skills/concept-diagrams/references/physical-shape-cookbook.md +42 -0
  34. package/.agent/skills/creative-ideation/SKILL.md +144 -0
  35. package/.agent/skills/creative-ideation/references/full-prompt-library.md +110 -0
  36. package/.agent/skills/devops-cli/SKILL.md +149 -0
  37. package/.agent/skills/devops-cli/references/app-discovery.md +112 -0
  38. package/.agent/skills/devops-cli/references/authentication.md +59 -0
  39. package/.agent/skills/devops-cli/references/cli-reference.md +104 -0
  40. package/.agent/skills/devops-cli/references/running-apps.md +171 -0
  41. package/.agent/skills/devops-watchers/SKILL.md +103 -0
  42. package/.agent/skills/docker-management/SKILL.md +273 -0
  43. package/.agent/skills/domain-intel/SKILL.md +96 -0
  44. package/.agent/skills/duckduckgo-search/SKILL.md +230 -0
  45. package/.agent/skills/github-auth/SKILL.md +240 -0
  46. package/.agent/skills/github-code-review/SKILL.md +474 -0
  47. package/.agent/skills/github-code-review/references/review-output-template.md +74 -0
  48. package/.agent/skills/github-issues/SKILL.md +363 -0
  49. package/.agent/skills/github-issues/templates/bug-report.md +35 -0
  50. package/.agent/skills/github-issues/templates/feature-request.md +31 -0
  51. package/.agent/skills/github-pr-workflow/SKILL.md +360 -0
  52. package/.agent/skills/github-pr-workflow/references/ci-troubleshooting.md +183 -0
  53. package/.agent/skills/github-pr-workflow/references/conventional-commits.md +71 -0
  54. package/.agent/skills/github-pr-workflow/templates/pr-body-bugfix.md +35 -0
  55. package/.agent/skills/github-pr-workflow/templates/pr-body-feature.md +33 -0
  56. package/.agent/skills/github-repo-management/SKILL.md +509 -0
  57. package/.agent/skills/github-repo-management/references/github-api-cheatsheet.md +161 -0
  58. package/.agent/skills/godmode/SKILL.md +396 -0
  59. package/.agent/skills/godmode/references/jailbreak-templates.md +128 -0
  60. package/.agent/skills/godmode/references/refusal-detection.md +142 -0
  61. package/.agent/skills/hyperframes/SKILL.md +182 -0
  62. package/.agent/skills/hyperframes/references/cli.md +185 -0
  63. package/.agent/skills/hyperframes/references/composition.md +129 -0
  64. package/.agent/skills/hyperframes/references/features.md +289 -0
  65. package/.agent/skills/hyperframes/references/gsap.md +136 -0
  66. package/.agent/skills/hyperframes/references/troubleshooting.md +137 -0
  67. package/.agent/skills/hyperframes/references/website-to-video.md +145 -0
  68. package/.agent/skills/jupyter-live-kernel/SKILL.md +160 -0
  69. package/.agent/skills/kanban-orchestrator/SKILL.md +209 -0
  70. package/.agent/skills/kanban-worker/SKILL.md +188 -0
  71. package/.agent/skills/llm-wiki/SKILL.md +499 -0
  72. package/.agent/skills/meme-generation/SKILL.md +122 -0
  73. package/.agent/skills/node-inspect-debugger/SKILL.md +312 -0
  74. package/.agent/skills/obsidian/SKILL.md +60 -0
  75. package/.agent/skills/osint-investigation/SKILL.md +269 -0
  76. package/.agent/skills/osint-investigation/templates/source-template.md +59 -0
  77. package/.agent/skills/oss-forensics/SKILL.md +422 -0
  78. package/.agent/skills/oss-forensics/references/evidence-types.md +89 -0
  79. package/.agent/skills/oss-forensics/references/github-archive-guide.md +184 -0
  80. package/.agent/skills/oss-forensics/references/investigation-templates.md +131 -0
  81. package/.agent/skills/oss-forensics/references/recovery-techniques.md +164 -0
  82. package/.agent/skills/oss-forensics/templates/forensic-report.md +151 -0
  83. package/.agent/skills/oss-forensics/templates/malicious-package-report.md +43 -0
  84. package/.agent/skills/parallel-cli/SKILL.md +384 -0
  85. package/.agent/skills/pinggy-tunnel/SKILL.md +302 -0
  86. package/.agent/skills/pixel-art/SKILL.md +209 -0
  87. package/.agent/skills/pixel-art/references/palettes.md +49 -0
  88. package/.agent/skills/plan/SKILL.md +331 -0
  89. package/.agent/skills/polymarket/SKILL.md +75 -0
  90. package/.agent/skills/polymarket/references/api-endpoints.md +220 -0
  91. package/.agent/skills/python-debugpy/SKILL.md +368 -0
  92. package/.agent/skills/requesting-code-review/SKILL.md +273 -0
  93. package/.agent/skills/research-paper-writing/SKILL.md +2367 -0
  94. package/.agent/skills/research-paper-writing/references/autoreason-methodology.md +394 -0
  95. package/.agent/skills/research-paper-writing/references/checklists.md +434 -0
  96. package/.agent/skills/research-paper-writing/references/citation-workflow.md +563 -0
  97. package/.agent/skills/research-paper-writing/references/experiment-patterns.md +728 -0
  98. package/.agent/skills/research-paper-writing/references/human-evaluation.md +476 -0
  99. package/.agent/skills/research-paper-writing/references/paper-types.md +481 -0
  100. package/.agent/skills/research-paper-writing/references/reviewer-guidelines.md +433 -0
  101. package/.agent/skills/research-paper-writing/references/sources.md +191 -0
  102. package/.agent/skills/research-paper-writing/references/writing-guide.md +474 -0
  103. package/.agent/skills/research-paper-writing/templates/README.md +251 -0
  104. package/.agent/skills/rest-graphql-debug/SKILL.md +507 -0
  105. package/.agent/skills/s6-container-supervision/SKILL.md +171 -0
  106. package/.agent/skills/scrapling/SKILL.md +328 -0
  107. package/.agent/skills/sherlock/SKILL.md +186 -0
  108. package/.agent/skills/simplify-code/SKILL.md +168 -0
  109. package/.agent/skills/skill-authoring/SKILL.md +158 -0
  110. package/.agent/skills/spike/SKILL.md +190 -0
  111. package/.agent/skills/subagent-driven-development/SKILL.md +345 -0
  112. package/.agent/skills/subagent-driven-development/references/context-budget-discipline.md +53 -0
  113. package/.agent/skills/subagent-driven-development/references/gates-taxonomy.md +93 -0
  114. package/.agent/skills/systematic-debugging/SKILL.md +360 -0
  115. package/.agent/skills/test-driven-development/SKILL.md +336 -0
  116. package/.agent/skills/video-orchestrator/SKILL.md +194 -0
  117. package/.agent/skills/video-orchestrator/references/examples.md +227 -0
  118. package/.agent/skills/video-orchestrator/references/intake.md +166 -0
  119. package/.agent/skills/video-orchestrator/references/kanban-setup.md +278 -0
  120. package/.agent/skills/video-orchestrator/references/monitoring.md +180 -0
  121. package/.agent/skills/video-orchestrator/references/role-archetypes.md +298 -0
  122. package/.agent/skills/video-orchestrator/references/tool-matrix.md +317 -0
  123. package/.agent/skills/web-pentest/SKILL.md +332 -0
  124. package/.agent/skills/web-pentest/references/bypass-techniques.md +133 -0
  125. package/.agent/skills/web-pentest/references/exploitation-techniques.md +204 -0
  126. package/.agent/skills/web-pentest/references/scope-enforcement.md +110 -0
  127. package/.agent/skills/web-pentest/references/vuln-taxonomy.md +81 -0
  128. package/.agent/skills/web-pentest/templates/authorization.md +69 -0
  129. package/.agent/skills/web-pentest/templates/pentest-report.md +178 -0
  130. package/.claude/commands/mindforge/skill-tdd.md +53 -0
  131. package/.claude/commands/mindforge/skills-index.md +118 -0
  132. package/.claude/commands/mindforge/systematic-debug.md +60 -0
  133. package/.mindforge/config.json +2 -2
  134. package/.mindforge/memory/sync-manifest.json +1 -1
  135. package/.mindforge/skills/arxiv/SKILL.md +294 -0
  136. package/.mindforge/skills/blogwatcher/SKILL.md +147 -0
  137. package/.mindforge/skills/code-wiki/SKILL.md +457 -0
  138. package/.mindforge/skills/codebase-inspection/SKILL.md +126 -0
  139. package/.mindforge/skills/concept-diagrams/SKILL.md +373 -0
  140. package/.mindforge/skills/creative-ideation/SKILL.md +162 -0
  141. package/.mindforge/skills/domain-intel/SKILL.md +116 -0
  142. package/.mindforge/skills/duckduckgo-search/SKILL.md +249 -0
  143. package/.mindforge/skills/github-code-review/SKILL.md +493 -0
  144. package/.mindforge/skills/github-issues/SKILL.md +382 -0
  145. package/.mindforge/skills/github-pr-workflow/SKILL.md +379 -0
  146. package/.mindforge/skills/jupyter-live-kernel/SKILL.md +179 -0
  147. package/.mindforge/skills/kanban-orchestrator/SKILL.md +227 -0
  148. package/.mindforge/skills/kanban-worker/SKILL.md +206 -0
  149. package/.mindforge/skills/meme-generation/SKILL.md +141 -0
  150. package/.mindforge/skills/obsidian/SKILL.md +80 -0
  151. package/.mindforge/skills/osint-investigation/SKILL.md +288 -0
  152. package/.mindforge/skills/oss-forensics/SKILL.md +421 -0
  153. package/.mindforge/skills/pixel-art/SKILL.md +228 -0
  154. package/.mindforge/skills/plan/SKILL.md +350 -0
  155. package/.mindforge/skills/requesting-code-review/SKILL.md +292 -0
  156. package/.mindforge/skills/research-paper-writing/SKILL.md +2384 -0
  157. package/.mindforge/skills/scrapling/SKILL.md +345 -0
  158. package/.mindforge/skills/sherlock/SKILL.md +203 -0
  159. package/.mindforge/skills/simplify-code/SKILL.md +187 -0
  160. package/.mindforge/skills/spike/SKILL.md +209 -0
  161. package/.mindforge/skills/subagent-driven-development/SKILL.md +364 -0
  162. package/.mindforge/skills/systematic-debugging/SKILL.md +379 -0
  163. package/.mindforge/skills/test-driven-development/SKILL.md +355 -0
  164. package/.mindforge/skills/web-pentest/SKILL.md +327 -0
  165. package/CHANGELOG.md +88 -0
  166. package/MINDFORGE.md +3 -3
  167. package/README.md +38 -3
  168. package/RELEASENOTES.md +100 -0
  169. package/bin/dashboard/api-router.js +10 -1
  170. package/bin/governance/approve.js +5 -1
  171. package/bin/memory/federated-sync.js +11 -2
  172. package/bin/memory/knowledge-capture.js +10 -1
  173. package/bin/memory/pillar-health-tracker.js +9 -1
  174. package/bin/review/ads-engine.js +2 -2
  175. package/bin/security/trust-boundaries.js +5 -0
  176. package/docs/getting-started.md +42 -5
  177. package/package.json +1 -1
@@ -0,0 +1,294 @@
1
+ ---
2
+ name: arxiv
3
+ description: "Search arXiv papers by keyword, author, category, or ID."
4
+ version: 1.0.0
5
+ status: stable
6
+ min_mindforge_version: 11.5.1
7
+ triggers: arxiv search, find papers, search arxiv, academic literature, find research papers, arxiv paper search, look up papers, academic paper search, search academic papers, find arxiv papers, arxiv query, paper lookup
8
+ ---
9
+
10
+ # arXiv Research
11
+
12
+ Search and retrieve academic papers from arXiv via their free REST API. No API key, no dependencies — just curl.
13
+
14
+ ## Quick Reference
15
+
16
+ | Action | Command |
17
+ |--------|---------|
18
+ | Search papers | `curl "https://export.arxiv.org/api/query?search_query=all:QUERY&max_results=5"` |
19
+ | Get specific paper | `curl "https://export.arxiv.org/api/query?id_list=2402.03300"` |
20
+ | Read abstract (web) | `web_extract(urls=["https://arxiv.org/abs/2402.03300"])` |
21
+ | Read full paper (PDF) | `web_extract(urls=["https://arxiv.org/pdf/2402.03300"])` |
22
+
23
+ ## Searching Papers
24
+
25
+ The API returns Atom XML. Parse with `grep`/`sed` or pipe through `python3` for clean output.
26
+
27
+ ### Basic search
28
+
29
+ ```bash
30
+ curl -s "https://export.arxiv.org/api/query?search_query=all:GRPO+reinforcement+learning&max_results=5"
31
+ ```
32
+
33
+ ### Clean output (parse XML to readable format)
34
+
35
+ ```bash
36
+ curl -s "https://export.arxiv.org/api/query?search_query=all:GRPO+reinforcement+learning&max_results=5&sortBy=submittedDate&sortOrder=descending" | python3 -c "
37
+ import sys, xml.etree.ElementTree as ET
38
+ ns = {'a': 'http://www.w3.org/2005/Atom'}
39
+ root = ET.parse(sys.stdin).getroot()
40
+ for i, entry in enumerate(root.findall('a:entry', ns)):
41
+ title = entry.find('a:title', ns).text.strip().replace('\n', ' ')
42
+ arxiv_id = entry.find('a:id', ns).text.strip().split('/abs/')[-1]
43
+ published = entry.find('a:published', ns).text[:10]
44
+ authors = ', '.join(a.find('a:name', ns).text for a in entry.findall('a:author', ns))
45
+ summary = entry.find('a:summary', ns).text.strip()[:200]
46
+ cats = ', '.join(c.get('term') for c in entry.findall('a:category', ns))
47
+ print(f'{i+1}. [{arxiv_id}] {title}')
48
+ print(f' Authors: {authors}')
49
+ print(f' Published: {published} | Categories: {cats}')
50
+ print(f' Abstract: {summary}...')
51
+ print(f' PDF: https://arxiv.org/pdf/{arxiv_id}')
52
+ print()
53
+ "
54
+ ```
55
+
56
+ ## Search Query Syntax
57
+
58
+ | Prefix | Searches | Example |
59
+ |--------|----------|---------|
60
+ | `all:` | All fields | `all:transformer+attention` |
61
+ | `ti:` | Title | `ti:large+language+models` |
62
+ | `au:` | Author | `au:vaswani` |
63
+ | `abs:` | Abstract | `abs:reinforcement+learning` |
64
+ | `cat:` | Category | `cat:cs.AI` |
65
+ | `co:` | Comment | `co:accepted+NeurIPS` |
66
+
67
+ ### Boolean operators
68
+
69
+ ```
70
+ # AND (default when using +)
71
+ search_query=all:transformer+attention
72
+
73
+ # OR
74
+ search_query=all:GPT+OR+all:BERT
75
+
76
+ # AND NOT
77
+ search_query=all:language+model+ANDNOT+all:vision
78
+
79
+ # Exact phrase
80
+ search_query=ti:"chain+of+thought"
81
+
82
+ # Combined
83
+ search_query=au:hinton+AND+cat:cs.LG
84
+ ```
85
+
86
+ ## Sort and Pagination
87
+
88
+ | Parameter | Options |
89
+ |-----------|---------|
90
+ | `sortBy` | `relevance`, `lastUpdatedDate`, `submittedDate` |
91
+ | `sortOrder` | `ascending`, `descending` |
92
+ | `start` | Result offset (0-based) |
93
+ | `max_results` | Number of results (default 10, max 30000) |
94
+
95
+ ```bash
96
+ # Latest 10 papers in cs.AI
97
+ curl -s "https://export.arxiv.org/api/query?search_query=cat:cs.AI&sortBy=submittedDate&sortOrder=descending&max_results=10"
98
+ ```
99
+
100
+ ## Fetching Specific Papers
101
+
102
+ ```bash
103
+ # By arXiv ID
104
+ curl -s "https://export.arxiv.org/api/query?id_list=2402.03300"
105
+
106
+ # Multiple papers
107
+ curl -s "https://export.arxiv.org/api/query?id_list=2402.03300,2401.12345,2403.00001"
108
+ ```
109
+
110
+ ## BibTeX Generation
111
+
112
+ After fetching metadata for a paper, generate a BibTeX entry:
113
+
114
+ {% raw %}
115
+ ```bash
116
+ curl -s "https://export.arxiv.org/api/query?id_list=1706.03762" | python3 -c "
117
+ import sys, xml.etree.ElementTree as ET
118
+ ns = {'a': 'http://www.w3.org/2005/Atom', 'arxiv': 'http://arxiv.org/schemas/atom'}
119
+ root = ET.parse(sys.stdin).getroot()
120
+ entry = root.find('a:entry', ns)
121
+ if entry is None: sys.exit('Paper not found')
122
+ title = entry.find('a:title', ns).text.strip().replace('\n', ' ')
123
+ authors = ' and '.join(a.find('a:name', ns).text for a in entry.findall('a:author', ns))
124
+ year = entry.find('a:published', ns).text[:4]
125
+ raw_id = entry.find('a:id', ns).text.strip().split('/abs/')[-1]
126
+ cat = entry.find('arxiv:primary_category', ns)
127
+ primary = cat.get('term') if cat is not None else 'cs.LG'
128
+ last_name = entry.find('a:author', ns).find('a:name', ns).text.split()[-1]
129
+ print(f'@article{{{last_name}{year}_{raw_id.replace(\".\", \"\")},')
130
+ print(f' title = {{{title}}},')
131
+ print(f' author = {{{authors}}},')
132
+ print(f' year = {{{year}}},')
133
+ print(f' eprint = {{{raw_id}}},')
134
+ print(f' archivePrefix = {{arXiv}},')
135
+ print(f' primaryClass = {{{primary}}},')
136
+ print(f' url = {{https://arxiv.org/abs/{raw_id}}}')
137
+ print('}')
138
+ "
139
+ ```
140
+ {% endraw %}
141
+
142
+ ## Reading Paper Content
143
+
144
+ After finding a paper, read it:
145
+
146
+ ```
147
+ # Abstract page (fast, metadata + abstract)
148
+ web_extract(urls=["https://arxiv.org/abs/2402.03300"])
149
+
150
+ # Full paper (PDF → markdown via Firecrawl)
151
+ web_extract(urls=["https://arxiv.org/pdf/2402.03300"])
152
+ ```
153
+
154
+ For local PDF processing, see the `ocr-and-documents` skill.
155
+
156
+ ## Common Categories
157
+
158
+ | Category | Field |
159
+ |----------|-------|
160
+ | `cs.AI` | Artificial Intelligence |
161
+ | `cs.CL` | Computation and Language (NLP) |
162
+ | `cs.CV` | Computer Vision |
163
+ | `cs.LG` | Machine Learning |
164
+ | `cs.CR` | Cryptography and Security |
165
+ | `stat.ML` | Machine Learning (Statistics) |
166
+ | `math.OC` | Optimization and Control |
167
+ | `physics.comp-ph` | Computational Physics |
168
+
169
+ Full list: https://arxiv.org/category_taxonomy
170
+
171
+ ## Helper Script
172
+
173
+ The `scripts/search_arxiv.py` script handles XML parsing and provides clean output:
174
+
175
+ ```bash
176
+ python scripts/search_arxiv.py "GRPO reinforcement learning"
177
+ python scripts/search_arxiv.py "transformer attention" --max 10 --sort date
178
+ python scripts/search_arxiv.py --author "Yann LeCun" --max 5
179
+ python scripts/search_arxiv.py --category cs.AI --sort date
180
+ python scripts/search_arxiv.py --id 2402.03300
181
+ python scripts/search_arxiv.py --id 2402.03300,2401.12345
182
+ ```
183
+
184
+ No dependencies — uses only Python stdlib.
185
+
186
+ ---
187
+
188
+ ## Semantic Scholar (Citations, Related Papers, Author Profiles)
189
+
190
+ arXiv doesn't provide citation data or recommendations. Use the **Semantic Scholar API** for that — free, no key needed for basic use (1 req/sec), returns JSON.
191
+
192
+ ### Get paper details + citations
193
+
194
+ ```bash
195
+ # By arXiv ID
196
+ curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:2402.03300?fields=title,authors,citationCount,referenceCount,influentialCitationCount,year,abstract" | python3 -m json.tool
197
+
198
+ # By Semantic Scholar paper ID or DOI
199
+ curl -s "https://api.semanticscholar.org/graph/v1/paper/DOI:10.1234/example?fields=title,citationCount"
200
+ ```
201
+
202
+ ### Get citations OF a paper (who cited it)
203
+
204
+ ```bash
205
+ curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:2402.03300/citations?fields=title,authors,year,citationCount&limit=10" | python3 -m json.tool
206
+ ```
207
+
208
+ ### Get references FROM a paper (what it cites)
209
+
210
+ ```bash
211
+ curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:2402.03300/references?fields=title,authors,year,citationCount&limit=10" | python3 -m json.tool
212
+ ```
213
+
214
+ ### Search papers (alternative to arXiv search, returns JSON)
215
+
216
+ ```bash
217
+ curl -s "https://api.semanticscholar.org/graph/v1/paper/search?query=GRPO+reinforcement+learning&limit=5&fields=title,authors,year,citationCount,externalIds" | python3 -m json.tool
218
+ ```
219
+
220
+ ### Get paper recommendations
221
+
222
+ ```bash
223
+ curl -s -X POST "https://api.semanticscholar.org/recommendations/v1/papers/" \
224
+ -H "Content-Type: application/json" \
225
+ -d '{"positivePaperIds": ["arXiv:2402.03300"], "negativePaperIds": []}' | python3 -m json.tool
226
+ ```
227
+
228
+ ### Author profile
229
+
230
+ ```bash
231
+ curl -s "https://api.semanticscholar.org/graph/v1/author/search?query=Yann+LeCun&fields=name,hIndex,citationCount,paperCount" | python3 -m json.tool
232
+ ```
233
+
234
+ ### Useful Semantic Scholar fields
235
+
236
+ `title`, `authors`, `year`, `abstract`, `citationCount`, `referenceCount`, `influentialCitationCount`, `isOpenAccess`, `openAccessPdf`, `fieldsOfStudy`, `publicationVenue`, `externalIds` (contains arXiv ID, DOI, etc.)
237
+
238
+ ---
239
+
240
+ ## Complete Research Workflow
241
+
242
+ 1. **Discover**: `python scripts/search_arxiv.py "your topic" --sort date --max 10`
243
+ 2. **Assess impact**: `curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:ID?fields=citationCount,influentialCitationCount"`
244
+ 3. **Read abstract**: `web_extract(urls=["https://arxiv.org/abs/ID"])`
245
+ 4. **Read full paper**: `web_extract(urls=["https://arxiv.org/pdf/ID"])`
246
+ 5. **Find related work**: `curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:ID/references?fields=title,citationCount&limit=20"`
247
+ 6. **Get recommendations**: POST to Semantic Scholar recommendations endpoint
248
+ 7. **Track authors**: `curl -s "https://api.semanticscholar.org/graph/v1/author/search?query=NAME"`
249
+
250
+ ## Rate Limits
251
+
252
+ | API | Rate | Auth |
253
+ |-----|------|------|
254
+ | arXiv | ~1 req / 3 seconds | None needed |
255
+ | Semantic Scholar | 1 req / second | None (100/sec with API key) |
256
+
257
+ ## Notes
258
+
259
+ - arXiv returns Atom XML — use the helper script or parsing snippet for clean output
260
+ - Semantic Scholar returns JSON — pipe through `python3 -m json.tool` for readability
261
+ - arXiv IDs: old format (`hep-th/0601001`) vs new (`2402.03300`)
262
+ - PDF: `https://arxiv.org/pdf/{id}` — Abstract: `https://arxiv.org/abs/{id}`
263
+ - HTML (when available): `https://arxiv.org/html/{id}`
264
+ - For local PDF processing, see the `ocr-and-documents` skill
265
+
266
+ ## ID Versioning
267
+
268
+ - `arxiv.org/abs/1706.03762` always resolves to the **latest** version
269
+ - `arxiv.org/abs/1706.03762v1` points to a **specific** immutable version
270
+ - When generating citations, preserve the version suffix you actually read to prevent citation drift (a later version may substantially change content)
271
+ - The API `<id>` field returns the versioned URL (e.g., `http://arxiv.org/abs/1706.03762v7`)
272
+
273
+ ## Withdrawn Papers
274
+
275
+ Papers can be withdrawn after submission. When this happens:
276
+ - The `<summary>` field contains a withdrawal notice (look for "withdrawn" or "retracted")
277
+ - Metadata fields may be incomplete
278
+ - Always check the summary before treating a result as a valid paper
279
+
280
+ ## Mandatory actions when this skill is active
281
+
282
+ Before applying this skill:
283
+ - [ ] Read the task requirements fully before acting
284
+ - [ ] Confirm you understand the goal and constraints
285
+ - [ ] Check for existing work or prior context in the codebase
286
+
287
+ While working:
288
+ - [ ] Follow the methodology described above step by step
289
+ - [ ] Document any decisions or findings as you go
290
+
291
+ After completing:
292
+ - [ ] Self-check: does the output satisfy the original requirement?
293
+ - [ ] Verify no regressions or unintended side effects
294
+
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: blogwatcher
3
+ description: "Monitor blogs and RSS/Atom feeds via blogwatcher-cli tool."
4
+ version: 2.0.0
5
+ status: stable
6
+ min_mindforge_version: 11.5.1
7
+ triggers: monitor blog, watch blog, track blog updates, blog surveillance, blog monitoring, blog watcher, track blog posts, monitor blog updates, watch blog posts, blog change detection, blog tracker, follow blog
8
+ ---
9
+
10
+ # Blogwatcher
11
+
12
+ Track blog and RSS/Atom feed updates with the `blogwatcher-cli` tool. Supports automatic feed discovery, HTML scraping fallback, OPML import, and read/unread article management.
13
+
14
+ ## Installation
15
+
16
+ Pick one method:
17
+
18
+ - **Go:** `go install github.com/JulienTant/blogwatcher-cli/cmd/blogwatcher-cli@latest`
19
+ - **Docker:** `docker run --rm -v blogwatcher-cli:/data ghcr.io/julientant/blogwatcher-cli`
20
+ - **Binary (Linux amd64):** `curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_linux_amd64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli`
21
+ - **Binary (Linux arm64):** `curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_linux_arm64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli`
22
+ - **Binary (macOS Apple Silicon):** `curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_darwin_arm64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli`
23
+ - **Binary (macOS Intel):** `curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_darwin_amd64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli`
24
+
25
+ All releases: https://github.com/JulienTant/blogwatcher-cli/releases
26
+
27
+ ### Docker with persistent storage
28
+
29
+ By default the database lives at `~/.blogwatcher-cli/blogwatcher-cli.db`. In Docker this is lost on container restart. Use `BLOGWATCHER_DB` or a volume mount to persist it:
30
+
31
+ ```bash
32
+ # Named volume (simplest)
33
+ docker run --rm -v blogwatcher-cli:/data -e BLOGWATCHER_DB=/data/blogwatcher-cli.db ghcr.io/julientant/blogwatcher-cli scan
34
+
35
+ # Host bind mount
36
+ docker run --rm -v /path/on/host:/data -e BLOGWATCHER_DB=/data/blogwatcher-cli.db ghcr.io/julientant/blogwatcher-cli scan
37
+ ```
38
+
39
+ ### Migrating from the original blogwatcher
40
+
41
+ If upgrading from `Hyaxia/blogwatcher`, move your database:
42
+
43
+ ```bash
44
+ mv ~/.blogwatcher/blogwatcher.db ~/.blogwatcher-cli/blogwatcher-cli.db
45
+ ```
46
+
47
+ The binary name changed from `blogwatcher` to `blogwatcher-cli`.
48
+
49
+ ## Common Commands
50
+
51
+ ### Managing blogs
52
+
53
+ - Add a blog: `blogwatcher-cli add "My Blog" https://example.com`
54
+ - Add with explicit feed: `blogwatcher-cli add "My Blog" https://example.com --feed-url https://example.com/feed.xml`
55
+ - Add with HTML scraping: `blogwatcher-cli add "My Blog" https://example.com --scrape-selector "article h2 a"`
56
+ - List tracked blogs: `blogwatcher-cli blogs`
57
+ - Remove a blog: `blogwatcher-cli remove "My Blog" --yes`
58
+ - Import from OPML: `blogwatcher-cli import subscriptions.opml`
59
+
60
+ ### Scanning and reading
61
+
62
+ - Scan all blogs: `blogwatcher-cli scan`
63
+ - Scan one blog: `blogwatcher-cli scan "My Blog"`
64
+ - List unread articles: `blogwatcher-cli articles`
65
+ - List all articles: `blogwatcher-cli articles --all`
66
+ - Filter by blog: `blogwatcher-cli articles --blog "My Blog"`
67
+ - Filter by category: `blogwatcher-cli articles --category "Engineering"`
68
+ - Mark article read: `blogwatcher-cli read 1`
69
+ - Mark article unread: `blogwatcher-cli unread 1`
70
+ - Mark all read: `blogwatcher-cli read-all`
71
+ - Mark all read for a blog: `blogwatcher-cli read-all --blog "My Blog" --yes`
72
+
73
+ ## Environment Variables
74
+
75
+ All flags can be set via environment variables with the `BLOGWATCHER_` prefix:
76
+
77
+ | Variable | Description |
78
+ |---|---|
79
+ | `BLOGWATCHER_DB` | Path to SQLite database file |
80
+ | `BLOGWATCHER_WORKERS` | Number of concurrent scan workers (default: 8) |
81
+ | `BLOGWATCHER_SILENT` | Only output "scan done" when scanning |
82
+ | `BLOGWATCHER_YES` | Skip confirmation prompts |
83
+ | `BLOGWATCHER_CATEGORY` | Default filter for articles by category |
84
+
85
+ ## Example Output
86
+
87
+ ```
88
+ $ blogwatcher-cli blogs
89
+ Tracked blogs (1):
90
+
91
+ xkcd
92
+ URL: https://xkcd.com
93
+ Feed: https://xkcd.com/atom.xml
94
+ Last scanned: 2026-04-03 10:30
95
+ ```
96
+
97
+ ```
98
+ $ blogwatcher-cli scan
99
+ Scanning 1 blog(s)...
100
+
101
+ xkcd
102
+ Source: RSS | Found: 4 | New: 4
103
+
104
+ Found 4 new article(s) total!
105
+ ```
106
+
107
+ ```
108
+ $ blogwatcher-cli articles
109
+ Unread articles (2):
110
+
111
+ [1] [new] Barrel - Part 13
112
+ Blog: xkcd
113
+ URL: https://xkcd.com/3095/
114
+ Published: 2026-04-02
115
+ Categories: Comics, Science
116
+
117
+ [2] [new] Volcano Fact
118
+ Blog: xkcd
119
+ URL: https://xkcd.com/3094/
120
+ Published: 2026-04-01
121
+ Categories: Comics
122
+ ```
123
+
124
+ ## Notes
125
+
126
+ - Auto-discovers RSS/Atom feeds from blog homepages when no `--feed-url` is provided.
127
+ - Falls back to HTML scraping if RSS fails and `--scrape-selector` is configured.
128
+ - Categories from RSS/Atom feeds are stored and can be used to filter articles.
129
+ - Import blogs in bulk from OPML files exported by Feedly, Inoreader, NewsBlur, etc.
130
+ - Database stored at `~/.blogwatcher-cli/blogwatcher-cli.db` by default (override with `--db` or `BLOGWATCHER_DB`).
131
+ - Use `blogwatcher-cli <command> --help` to discover all flags and options.
132
+
133
+ ## Mandatory actions when this skill is active
134
+
135
+ Before applying this skill:
136
+ - [ ] Read the task requirements fully before acting
137
+ - [ ] Confirm you understand the goal and constraints
138
+ - [ ] Check for existing work or prior context in the codebase
139
+
140
+ While working:
141
+ - [ ] Follow the methodology described above step by step
142
+ - [ ] Document any decisions or findings as you go
143
+
144
+ After completing:
145
+ - [ ] Self-check: does the output satisfy the original requirement?
146
+ - [ ] Verify no regressions or unintended side effects
147
+