flonat-research 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 (285) hide show
  1. package/.claude/agents/domain-reviewer.md +336 -0
  2. package/.claude/agents/fixer.md +226 -0
  3. package/.claude/agents/paper-critic.md +370 -0
  4. package/.claude/agents/peer-reviewer.md +289 -0
  5. package/.claude/agents/proposal-reviewer.md +215 -0
  6. package/.claude/agents/referee2-reviewer.md +367 -0
  7. package/.claude/agents/references/journal-referee-profiles.md +354 -0
  8. package/.claude/agents/references/paper-critic/council-personas.md +77 -0
  9. package/.claude/agents/references/paper-critic/council-prompts.md +198 -0
  10. package/.claude/agents/references/peer-reviewer/report-template.md +199 -0
  11. package/.claude/agents/references/peer-reviewer/sa-prompts.md +260 -0
  12. package/.claude/agents/references/peer-reviewer/security-scan.md +188 -0
  13. package/.claude/agents/references/proposal-reviewer/report-template.md +144 -0
  14. package/.claude/agents/references/proposal-reviewer/sa-prompts.md +149 -0
  15. package/.claude/agents/references/referee-config.md +114 -0
  16. package/.claude/agents/references/referee2-reviewer/audit-checklists.md +287 -0
  17. package/.claude/agents/references/referee2-reviewer/report-template.md +334 -0
  18. package/.claude/rules/design-before-results.md +52 -0
  19. package/.claude/rules/ignore-agents-md.md +17 -0
  20. package/.claude/rules/ignore-gemini-md.md +17 -0
  21. package/.claude/rules/lean-claude-md.md +45 -0
  22. package/.claude/rules/learn-tags.md +99 -0
  23. package/.claude/rules/overleaf-separation.md +67 -0
  24. package/.claude/rules/plan-first.md +175 -0
  25. package/.claude/rules/read-docs-first.md +50 -0
  26. package/.claude/rules/scope-discipline.md +28 -0
  27. package/.claude/settings.json +125 -0
  28. package/.context/current-focus.md +33 -0
  29. package/.context/preferences/priorities.md +36 -0
  30. package/.context/preferences/task-naming.md +28 -0
  31. package/.context/profile.md +29 -0
  32. package/.context/projects/_index.md +41 -0
  33. package/.context/projects/papers/nudge-exp.md +22 -0
  34. package/.context/projects/papers/uncertainty.md +31 -0
  35. package/.context/resources/claude-scientific-writer-review.md +48 -0
  36. package/.context/resources/cunningham-multi-analyst-agents.md +104 -0
  37. package/.context/resources/cunningham-multilang-code-audit.md +62 -0
  38. package/.context/resources/google-ai-co-scientist-review.md +72 -0
  39. package/.context/resources/karpathy-llm-council-review.md +58 -0
  40. package/.context/resources/multi-coder-reliability-protocol.md +175 -0
  41. package/.context/resources/pedro-santanna-takeaways.md +96 -0
  42. package/.context/resources/venue-rankings/abs_ajg_2024.csv +1823 -0
  43. package/.context/resources/venue-rankings/abs_ajg_2024_econ.csv +356 -0
  44. package/.context/resources/venue-rankings/cabs_4_4star_theory.csv +40 -0
  45. package/.context/resources/venue-rankings/core_2026.csv +801 -0
  46. package/.context/resources/venue-rankings.md +147 -0
  47. package/.context/workflows/README.md +69 -0
  48. package/.context/workflows/daily-review.md +91 -0
  49. package/.context/workflows/meeting-actions.md +108 -0
  50. package/.context/workflows/replication-protocol.md +155 -0
  51. package/.context/workflows/weekly-review.md +113 -0
  52. package/.mcp-server-biblio/formatters.py +158 -0
  53. package/.mcp-server-biblio/pyproject.toml +11 -0
  54. package/.mcp-server-biblio/server.py +678 -0
  55. package/.mcp-server-biblio/sources/__init__.py +14 -0
  56. package/.mcp-server-biblio/sources/base.py +73 -0
  57. package/.mcp-server-biblio/sources/formatters.py +83 -0
  58. package/.mcp-server-biblio/sources/models.py +22 -0
  59. package/.mcp-server-biblio/sources/multi_source.py +243 -0
  60. package/.mcp-server-biblio/sources/openalex_source.py +183 -0
  61. package/.mcp-server-biblio/sources/scopus_source.py +309 -0
  62. package/.mcp-server-biblio/sources/wos_source.py +508 -0
  63. package/.mcp-server-biblio/uv.lock +896 -0
  64. package/.scripts/README.md +161 -0
  65. package/.scripts/ai_pattern_density.py +446 -0
  66. package/.scripts/conf +445 -0
  67. package/.scripts/config.py +122 -0
  68. package/.scripts/count_inventory.py +275 -0
  69. package/.scripts/daily_digest.py +288 -0
  70. package/.scripts/done +177 -0
  71. package/.scripts/extract_meeting_actions.py +223 -0
  72. package/.scripts/focus +176 -0
  73. package/.scripts/generate-codex-agents-md.py +217 -0
  74. package/.scripts/inbox +194 -0
  75. package/.scripts/notion_helpers.py +325 -0
  76. package/.scripts/openalex/query_helpers.py +306 -0
  77. package/.scripts/papers +227 -0
  78. package/.scripts/query +223 -0
  79. package/.scripts/session-history.py +201 -0
  80. package/.scripts/skill-health.py +516 -0
  81. package/.scripts/skill-log-miner.py +273 -0
  82. package/.scripts/sync-to-codex.sh +252 -0
  83. package/.scripts/task +213 -0
  84. package/.scripts/tasks +190 -0
  85. package/.scripts/week +206 -0
  86. package/CLAUDE.md +197 -0
  87. package/LICENSE +21 -0
  88. package/MEMORY.md +38 -0
  89. package/README.md +269 -0
  90. package/docs/agents.md +44 -0
  91. package/docs/bibliography-setup.md +55 -0
  92. package/docs/council-mode.md +36 -0
  93. package/docs/getting-started.md +245 -0
  94. package/docs/hooks.md +38 -0
  95. package/docs/mcp-servers.md +82 -0
  96. package/docs/notion-setup.md +109 -0
  97. package/docs/rules.md +33 -0
  98. package/docs/scripts.md +303 -0
  99. package/docs/setup-overview/setup-overview.pdf +0 -0
  100. package/docs/skills.md +70 -0
  101. package/docs/system.md +159 -0
  102. package/hooks/block-destructive-git.sh +66 -0
  103. package/hooks/context-monitor.py +114 -0
  104. package/hooks/postcompact-restore.py +157 -0
  105. package/hooks/precompact-autosave.py +181 -0
  106. package/hooks/promise-checker.sh +124 -0
  107. package/hooks/protect-source-files.sh +81 -0
  108. package/hooks/resume-context-loader.sh +53 -0
  109. package/hooks/startup-context-loader.sh +102 -0
  110. package/package.json +51 -0
  111. package/packages/cli-council/.github/workflows/claude-code-review.yml +44 -0
  112. package/packages/cli-council/.github/workflows/claude.yml +50 -0
  113. package/packages/cli-council/README.md +100 -0
  114. package/packages/cli-council/pyproject.toml +43 -0
  115. package/packages/cli-council/src/cli_council/__init__.py +19 -0
  116. package/packages/cli-council/src/cli_council/__main__.py +185 -0
  117. package/packages/cli-council/src/cli_council/backends/__init__.py +8 -0
  118. package/packages/cli-council/src/cli_council/backends/base.py +81 -0
  119. package/packages/cli-council/src/cli_council/backends/claude.py +25 -0
  120. package/packages/cli-council/src/cli_council/backends/codex.py +27 -0
  121. package/packages/cli-council/src/cli_council/backends/gemini.py +26 -0
  122. package/packages/cli-council/src/cli_council/checkpoint.py +212 -0
  123. package/packages/cli-council/src/cli_council/config.py +51 -0
  124. package/packages/cli-council/src/cli_council/council.py +391 -0
  125. package/packages/cli-council/src/cli_council/models.py +46 -0
  126. package/packages/llm-council/.github/workflows/claude-code-review.yml +44 -0
  127. package/packages/llm-council/.github/workflows/claude.yml +50 -0
  128. package/packages/llm-council/README.md +453 -0
  129. package/packages/llm-council/pyproject.toml +42 -0
  130. package/packages/llm-council/src/llm_council/__init__.py +23 -0
  131. package/packages/llm-council/src/llm_council/__main__.py +259 -0
  132. package/packages/llm-council/src/llm_council/checkpoint.py +193 -0
  133. package/packages/llm-council/src/llm_council/client.py +253 -0
  134. package/packages/llm-council/src/llm_council/config.py +232 -0
  135. package/packages/llm-council/src/llm_council/council.py +482 -0
  136. package/packages/llm-council/src/llm_council/models.py +46 -0
  137. package/packages/mcp-bibliography/MEMORY.md +31 -0
  138. package/packages/mcp-bibliography/_app.py +226 -0
  139. package/packages/mcp-bibliography/formatters.py +158 -0
  140. package/packages/mcp-bibliography/log/2026-03-13-2100.md +35 -0
  141. package/packages/mcp-bibliography/pyproject.toml +15 -0
  142. package/packages/mcp-bibliography/run.sh +20 -0
  143. package/packages/mcp-bibliography/scholarly_formatters.py +83 -0
  144. package/packages/mcp-bibliography/server.py +1857 -0
  145. package/packages/mcp-bibliography/tools/__init__.py +28 -0
  146. package/packages/mcp-bibliography/tools/_registry.py +19 -0
  147. package/packages/mcp-bibliography/tools/altmetric.py +107 -0
  148. package/packages/mcp-bibliography/tools/core.py +92 -0
  149. package/packages/mcp-bibliography/tools/dblp.py +52 -0
  150. package/packages/mcp-bibliography/tools/openalex.py +296 -0
  151. package/packages/mcp-bibliography/tools/opencitations.py +102 -0
  152. package/packages/mcp-bibliography/tools/openreview.py +179 -0
  153. package/packages/mcp-bibliography/tools/orcid.py +131 -0
  154. package/packages/mcp-bibliography/tools/scholarly.py +575 -0
  155. package/packages/mcp-bibliography/tools/unpaywall.py +63 -0
  156. package/packages/mcp-bibliography/tools/zenodo.py +123 -0
  157. package/packages/mcp-bibliography/uv.lock +711 -0
  158. package/scripts/setup.sh +143 -0
  159. package/skills/beamer-deck/SKILL.md +199 -0
  160. package/skills/beamer-deck/references/quality-rubric.md +54 -0
  161. package/skills/beamer-deck/references/review-prompts.md +106 -0
  162. package/skills/bib-validate/SKILL.md +261 -0
  163. package/skills/bib-validate/references/council-mode.md +34 -0
  164. package/skills/bib-validate/references/deep-verify.md +79 -0
  165. package/skills/bib-validate/references/fix-mode.md +36 -0
  166. package/skills/bib-validate/references/openalex-verification.md +45 -0
  167. package/skills/bib-validate/references/preprint-check.md +31 -0
  168. package/skills/bib-validate/references/ref-manager-crossref.md +41 -0
  169. package/skills/bib-validate/references/report-template.md +82 -0
  170. package/skills/code-archaeology/SKILL.md +141 -0
  171. package/skills/code-review/SKILL.md +265 -0
  172. package/skills/code-review/references/quality-rubric.md +67 -0
  173. package/skills/consolidate-memory/SKILL.md +208 -0
  174. package/skills/context-status/SKILL.md +126 -0
  175. package/skills/creation-guard/SKILL.md +230 -0
  176. package/skills/devils-advocate/SKILL.md +130 -0
  177. package/skills/devils-advocate/references/competing-hypotheses.md +83 -0
  178. package/skills/init-project/SKILL.md +115 -0
  179. package/skills/init-project-course/references/memory-and-settings.md +92 -0
  180. package/skills/init-project-course/references/organise-templates.md +94 -0
  181. package/skills/init-project-course/skill.md +147 -0
  182. package/skills/init-project-light/skill.md +139 -0
  183. package/skills/init-project-research/SKILL.md +368 -0
  184. package/skills/init-project-research/references/atlas-pipeline-sync.md +70 -0
  185. package/skills/init-project-research/references/atlas-schema.md +81 -0
  186. package/skills/init-project-research/references/confirmation-report.md +39 -0
  187. package/skills/init-project-research/references/domain-profile-template.md +104 -0
  188. package/skills/init-project-research/references/interview-round3.md +34 -0
  189. package/skills/init-project-research/references/literature-discovery.md +43 -0
  190. package/skills/init-project-research/references/scaffold-details.md +197 -0
  191. package/skills/init-project-research/templates/field-calibration.md +60 -0
  192. package/skills/init-project-research/templates/pipeline-manifest.md +63 -0
  193. package/skills/init-project-research/templates/run-all.sh +116 -0
  194. package/skills/init-project-research/templates/seed-files.md +337 -0
  195. package/skills/insights-deck/SKILL.md +151 -0
  196. package/skills/interview-me/SKILL.md +157 -0
  197. package/skills/latex/SKILL.md +141 -0
  198. package/skills/latex/references/latex-configs.md +183 -0
  199. package/skills/latex-autofix/SKILL.md +230 -0
  200. package/skills/latex-autofix/references/known-errors.md +183 -0
  201. package/skills/latex-autofix/references/quality-rubric.md +50 -0
  202. package/skills/latex-health-check/SKILL.md +161 -0
  203. package/skills/learn/SKILL.md +220 -0
  204. package/skills/learn/scripts/validate_skill.py +265 -0
  205. package/skills/lessons-learned/SKILL.md +201 -0
  206. package/skills/literature/SKILL.md +335 -0
  207. package/skills/literature/references/agent-templates.md +393 -0
  208. package/skills/literature/references/bibliometric-apis.md +44 -0
  209. package/skills/literature/references/cli-council-search.md +79 -0
  210. package/skills/literature/references/openalex-api-guide.md +371 -0
  211. package/skills/literature/references/openalex-common-queries.md +381 -0
  212. package/skills/literature/references/openalex-workflows.md +248 -0
  213. package/skills/literature/references/reference-manager-sync.md +36 -0
  214. package/skills/literature/references/scopus-api-guide.md +208 -0
  215. package/skills/literature/references/wos-api-guide.md +308 -0
  216. package/skills/multi-perspective/SKILL.md +311 -0
  217. package/skills/multi-perspective/references/computational-many-analysts.md +77 -0
  218. package/skills/pipeline-manifest/SKILL.md +226 -0
  219. package/skills/pre-submission-report/SKILL.md +153 -0
  220. package/skills/process-reviews/SKILL.md +244 -0
  221. package/skills/process-reviews/references/rr-routing.md +101 -0
  222. package/skills/project-deck/SKILL.md +87 -0
  223. package/skills/project-safety/SKILL.md +135 -0
  224. package/skills/proofread/SKILL.md +254 -0
  225. package/skills/proofread/references/quality-rubric.md +104 -0
  226. package/skills/python-env/SKILL.md +57 -0
  227. package/skills/quarto-deck/SKILL.md +226 -0
  228. package/skills/quarto-deck/references/markdown-format.md +143 -0
  229. package/skills/quarto-deck/references/quality-rubric.md +54 -0
  230. package/skills/save-context/SKILL.md +174 -0
  231. package/skills/session-log/SKILL.md +98 -0
  232. package/skills/shared/concept-validation-gate.md +161 -0
  233. package/skills/shared/council-protocol.md +265 -0
  234. package/skills/shared/distribution-diagnostics.md +164 -0
  235. package/skills/shared/engagement-stratified-sampling.md +218 -0
  236. package/skills/shared/escalation-protocol.md +74 -0
  237. package/skills/shared/external-audit-protocol.md +205 -0
  238. package/skills/shared/intercoder-reliability.md +256 -0
  239. package/skills/shared/mcp-degradation.md +81 -0
  240. package/skills/shared/method-probing-questions.md +163 -0
  241. package/skills/shared/multi-language-conventions.md +143 -0
  242. package/skills/shared/paid-api-safety.md +174 -0
  243. package/skills/shared/palettes.md +90 -0
  244. package/skills/shared/progressive-disclosure.md +92 -0
  245. package/skills/shared/project-documentation-content.md +443 -0
  246. package/skills/shared/project-documentation-format.md +281 -0
  247. package/skills/shared/project-documentation.md +100 -0
  248. package/skills/shared/publication-output.md +138 -0
  249. package/skills/shared/quality-scoring.md +70 -0
  250. package/skills/shared/reference-resolution.md +77 -0
  251. package/skills/shared/research-quality-rubric.md +165 -0
  252. package/skills/shared/rhetoric-principles.md +54 -0
  253. package/skills/shared/skill-design-patterns.md +272 -0
  254. package/skills/shared/skill-index.md +240 -0
  255. package/skills/shared/system-documentation.md +334 -0
  256. package/skills/shared/tikz-rules.md +402 -0
  257. package/skills/shared/validation-tiers.md +121 -0
  258. package/skills/shared/venue-guides/README.md +46 -0
  259. package/skills/shared/venue-guides/cell_press_style.md +483 -0
  260. package/skills/shared/venue-guides/conferences_formatting.md +564 -0
  261. package/skills/shared/venue-guides/cs_conference_style.md +463 -0
  262. package/skills/shared/venue-guides/examples/cell_summary_example.md +247 -0
  263. package/skills/shared/venue-guides/examples/medical_structured_abstract.md +313 -0
  264. package/skills/shared/venue-guides/examples/nature_abstract_examples.md +213 -0
  265. package/skills/shared/venue-guides/examples/neurips_introduction_example.md +245 -0
  266. package/skills/shared/venue-guides/journals_formatting.md +486 -0
  267. package/skills/shared/venue-guides/medical_journal_styles.md +535 -0
  268. package/skills/shared/venue-guides/ml_conference_style.md +556 -0
  269. package/skills/shared/venue-guides/nature_science_style.md +405 -0
  270. package/skills/shared/venue-guides/reviewer_expectations.md +417 -0
  271. package/skills/shared/venue-guides/venue_writing_styles.md +321 -0
  272. package/skills/split-pdf/SKILL.md +172 -0
  273. package/skills/split-pdf/methodology.md +48 -0
  274. package/skills/sync-notion/SKILL.md +93 -0
  275. package/skills/system-audit/SKILL.md +157 -0
  276. package/skills/system-audit/references/sub-agent-prompts.md +294 -0
  277. package/skills/task-management/SKILL.md +131 -0
  278. package/skills/update-focus/SKILL.md +204 -0
  279. package/skills/update-project-doc/SKILL.md +194 -0
  280. package/skills/validate-bib/SKILL.md +242 -0
  281. package/skills/validate-bib/references/council-mode.md +34 -0
  282. package/skills/validate-bib/references/deep-verify.md +71 -0
  283. package/skills/validate-bib/references/openalex-verification.md +45 -0
  284. package/skills/validate-bib/references/preprint-check.md +31 -0
  285. package/skills/validate-bib/references/report-template.md +62 -0
@@ -0,0 +1,281 @@
1
+ # Project Documentation — Format Conventions
2
+
3
+ > Conventions for ASCII diagrams, env vars, tone, LaTeX, Beamer, public variants, and validation.
4
+ > Split from [`project-documentation.md`](project-documentation.md) for leanness.
5
+
6
+ ---
7
+
8
+ ## ASCII Diagrams
9
+
10
+ ### Direction Conventions
11
+
12
+ | Flow type | Direction | Example |
13
+ |-----------|-----------|---------|
14
+ | Data/request flow | Left-to-right | `User ──→ API ──→ DB` |
15
+ | Stage progression | Top-to-bottom | Stage 1 → Stage 2 → Stage 3 |
16
+ | Architecture layers | Top-to-bottom | Frontend → Backend → Database |
17
+ | Workflow chains | Left-to-right with branches | `A ──→ B ──→ C` with `└──→ D` |
18
+
19
+ ### Symbol Legend
20
+
21
+ ```
22
+ ──→ directional flow
23
+ │ vertical connection
24
+ ├── branch (continuing)
25
+ └── branch (terminal)
26
+ ┌─┐ box corners (for containers)
27
+ ▼ ▲ vertical arrows
28
+ ```
29
+
30
+ ### Labelling
31
+
32
+ - Label every box with its service/component name
33
+ - Label arrows only when the relationship isn't obvious (e.g., "OAuth", "REST API")
34
+ - Add parenthetical notes for data stores: `SQLite (results + cache)`
35
+ - Keep diagrams under 15 lines — split into multiple diagrams if needed
36
+
37
+ ---
38
+
39
+ ## Environment Variable Documentation
40
+
41
+ Use this table format everywhere env vars are documented:
42
+
43
+ ```markdown
44
+ | Variable | Purpose | Required | Default |
45
+ |----------|---------|----------|---------|
46
+ | `OPENROUTER_API_KEY` | LLM access via OpenRouter | Yes | — |
47
+ | `OPENALEX_API_KEY` | OpenAlex bibliometric data | Yes | — |
48
+ | `SCOPUS_API_KEY` | Scopus search (optional) | No | — |
49
+ ```
50
+
51
+ **Rules:**
52
+ - Required column: "Yes" or "No" — never blank
53
+ - Default column: the actual default value, or "—" if none
54
+ - Group by service (API keys together, app config together)
55
+ - In READMEs, show env vars inside bash code blocks with comments. In reference docs, use the table.
56
+ - `.env.example` must include every variable with a comment
57
+
58
+ ---
59
+
60
+ ## Tone by Audience
61
+
62
+ | Audience | Tone | Patterns |
63
+ |----------|------|----------|
64
+ | End users (user manual) | Approachable, instructional | "You can...", "Enter your...", "Results include..." |
65
+ | Developers (README) | Crisp, feature-focused | Active verbs: "Get", "Fetch", "Run", "Configure" |
66
+ | Maintainers (architecture) | Technical, precise | Third person: "The orchestrator wires...", "Requests flow through..." |
67
+ | Adopters (public repo) | Welcoming, honest | "Built for...", explicit audience statement |
68
+
69
+ ---
70
+
71
+ ## LaTeX Documentation
72
+
73
+ When a document exists in both markdown and LaTeX (e.g., user manual in `.md` and `.tex`), the markdown is the source of truth for content. The LaTeX version adds typographic polish.
74
+
75
+ ### Standard Preamble (Article Style)
76
+
77
+ ```latex
78
+ \documentclass[11pt,a4paper]{article}
79
+
80
+ \usepackage{geometry} % Margins (2.5cm all sides)
81
+ \usepackage[utf8]{inputenc}
82
+ \usepackage[T1]{fontenc}
83
+ \usepackage{lmodern} % Modern serif font (not Computer Modern)
84
+ \usepackage{microtype} % Typographic refinement
85
+ \usepackage{parskip} % Paragraph spacing, no indents
86
+ \usepackage{hyperref} % Clickable links
87
+ \usepackage{xcolor} % Custom colours
88
+ \usepackage{booktabs} % Professional tables (\toprule, \midrule, \bottomrule)
89
+ \usepackage{longtable} % Multi-page tables
90
+ \usepackage{enumitem} % List customisation
91
+ \usepackage{listings} % Code blocks
92
+ \usepackage[skins,breakable]{tcolorbox} % Callout boxes
93
+ \usepackage{tikz} % Diagrams
94
+ ```
95
+
96
+ ### Custom Commands
97
+
98
+ Define these reusable commands in the preamble for consistency:
99
+
100
+ ```latex
101
+ \newcommand{\code}[1]{\texttt{\small #1}} % Inline code
102
+ \newcommand{\filepath}[1]{\texttt{\small #1}} % File paths
103
+ \newcommand{\skill}[1]{\texttt{/#1}} % Skill references
104
+ \newcommand{\hook}[1]{\texttt{#1}} % Hook references
105
+ \newcommand{\keyterm}[1]{\textbf{#1}} % Key terminology
106
+ ```
107
+
108
+ ### Colour Palette for Callout Boxes
109
+
110
+ ```latex
111
+ \definecolor{accentgreen}{HTML}{059669} % Tip boxes
112
+ \definecolor{accentamber}{HTML}{D97706} % Warning boxes
113
+ \definecolor{accentred}{HTML}{DC2626} % Error/critical boxes
114
+ \definecolor{codebg}{HTML}{F3F4F6} % Code background
115
+ \definecolor{codeframe}{HTML}{D1D5DB} % Code border
116
+
117
+ \newtcolorbox{tipbox}[1][]{
118
+ colback=accentgreen!5, colframe=accentgreen!60,
119
+ fonttitle=\bfseries, title={#1}, sharp corners, boxrule=0.5pt}
120
+ \newtcolorbox{warnbox}[1][]{
121
+ colback=accentamber!5, colframe=accentamber!60,
122
+ fonttitle=\bfseries, title={#1}, sharp corners, boxrule=0.5pt}
123
+ ```
124
+
125
+ ### Table Formatting
126
+
127
+ - Use `booktabs` rules: `\toprule`, `\midrule`, `\bottomrule` — never vertical lines
128
+ - Column spec: `@{}lp{7cm}@{}` (remove outer padding, left column, paragraph column)
129
+ - Multi-page tables: `\begin{longtable}` with `\endhead` for repeating headers
130
+ - Always `\centering` within table environments
131
+
132
+ ### md/tex Parity
133
+
134
+ When both formats exist, structural parity is required: every `##` heading in the markdown should have a corresponding `\section{}` in LaTeX. Content can differ slightly (LaTeX adds figures, better formatting), but the section structure must match. Validate with `validate_docs.py` check 2.
135
+
136
+ ---
137
+
138
+ ## Beamer Presentation Docs
139
+
140
+ Projects may include Beamer decks in `docs/` (e.g., `docs/scout-overview/`, `docs/setup-overview/`). These are outward-facing documentation, not just slides.
141
+
142
+ ### Standard Setup
143
+
144
+ ```latex
145
+ \documentclass[aspectratio=169,11pt]{beamer}
146
+ \setbeamertemplate{navigation symbols}{} % No nav clutter
147
+ \setbeamertemplate{footline}[frame number] % Frame numbers only
148
+ ```
149
+
150
+ - **Aspect ratio:** Always 16:9 (`aspectratio=169`)
151
+ - **Navigation symbols:** Disabled
152
+ - **Footline:** Frame number only (or custom three-part: author | title | X/Y)
153
+
154
+ ### Colour Palette
155
+
156
+ Define a cohesive palette of 5-8 colours in the preamble. Established palette:
157
+
158
+ | Colour | Hex | Use |
159
+ |--------|-----|-----|
160
+ | `Midnight` | `1A1A2E` | Dark backgrounds, body text |
161
+ | `DeepBlue` | `16213E` | Frame title backgrounds |
162
+ | `RoyalBlue` | `0F3460` | Structure, bullet markers |
163
+ | `Coral` | `E94560` | Alerts, emphasis |
164
+ | `CloudWhite` | `FAFBFC` | Main background |
165
+ | `SoftGray` | `BDC3C7` | Subtitles, subdued text |
166
+ | `LightBlue` | `D6EAF8` | TikZ box fills |
167
+ | `SlateGray` | `5D6D7E` | Arrows, secondary elements |
168
+
169
+ ### Frame Title Conventions
170
+
171
+ - Use **substantive claims**, not labels: "62 skills cover the full research lifecycle" not "Skills Overview"
172
+ - Optional subtitle for framing questions: "Every new AI session starts from zero"
173
+ - Keep titles to one line
174
+
175
+ ### TikZ Diagram Styling
176
+
177
+ ```latex
178
+ \begin{tikzpicture}[
179
+ node distance=0.6cm and 0.8cm,
180
+ box/.style={draw=SlateGray, rounded corners=3pt,
181
+ minimum width=2.0cm, minimum height=0.75cm,
182
+ align=center, fill=#1, text=Midnight},
183
+ box/.default={LightBlue},
184
+ arr/.style={-{Stealth[length=2mm]}, thick, color=SlateGray},
185
+ ]
186
+ ```
187
+
188
+ - Rounded corners (3pt), minimum dimensions, centred text
189
+ - Colour-code by component type (e.g., `Coral!20` for interfaces, `CloudWhite` for core, `SoftGray!30` for external)
190
+ - Stealth arrowheads, thick strokes
191
+
192
+ ### Code Blocks in Beamer
193
+
194
+ Use small monospace fonts — slides need compact code:
195
+
196
+ ```latex
197
+ \begin{lstlisting}[language={}, basicstyle=\ttfamily\fontsize{6.5}{8}\selectfont]
198
+ ```
199
+
200
+ ### Bullet Styles
201
+
202
+ - Level 1: `\tiny$\blacksquare$` in primary colour (filled square)
203
+ - Level 2: `\scriptsize$\blacktriangleright$` in secondary colour (right triangle)
204
+ - Enumerate: `\insertenumlabel.` in primary colour
205
+
206
+ ---
207
+
208
+ ## Public/Anonymized Variants
209
+
210
+ When a document has both private and public versions (e.g., `setup-overview.tex` and `setup-overview-public.tex`), follow these conventions.
211
+
212
+ ### What to Anonymize
213
+
214
+ | Private | Public replacement |
215
+ |---------|-------------------|
216
+ | Author name | Generic descriptor ("PhD researcher") or GitHub handle |
217
+ | Institution names | Remove entirely |
218
+ | Exact component counts | Remove or genericize ("30+", "Skills" without number) |
219
+ | Specific project names | "Multiple active research projects" |
220
+ | vault references | "Task manager" (generic) |
221
+ | Date in `\date{}` | GitHub URL or "Open-source" descriptor |
222
+
223
+ ### Sync Markers
224
+
225
+ For auto-generated or synced content in public markdown files, use HTML comment markers:
226
+
227
+ ```markdown
228
+ <!-- MARKER-NAME:START -->
229
+ <!-- auto-generated by script-name.py — do not edit manually -->
230
+ [content here]
231
+ <!-- MARKER-NAME:END -->
232
+ ```
233
+
234
+ - Marker names: UPPERCASE-HYPHENATED (`COMPONENT-TABLE`, `SKILLS-SUMMARY`, `FILE-TREE`)
235
+ - Attribution line after START: `auto-generated by ...` or `synced from private ...`
236
+ - Warning: `do not edit manually`
237
+
238
+ ### Private LaTeX Headers
239
+
240
+ ```latex
241
+ % ============================================================
242
+ % Document Title — Description
243
+ % Author · Month Year
244
+ % ============================================================
245
+ ```
246
+
247
+ ### Public LaTeX Headers
248
+
249
+ ```latex
250
+ % ============================================================
251
+ % Document Title — Public Version (Format)
252
+ % Generated during sync — DO NOT EDIT MANUALLY
253
+ % Edit source-file.tex and re-run sync-script.sh
254
+ % ============================================================
255
+ ```
256
+
257
+ ---
258
+
259
+ ## Automated Validation
260
+
261
+ Projects with documentation in multiple formats or locations should include a validation script that catches drift automatically.
262
+
263
+ ### The `validate_docs.py` Pattern
264
+
265
+ - **Stdlib-only** — no venv needed, runs anywhere Python is installed
266
+ - **Location:** `scripts/validate_docs.py` in the project root
267
+ - **Severity levels:** FAIL (blocks CI) and WARN (informational, `--strict` promotes to FAIL)
268
+ - **Flags:** `--strict` (treat warnings as failures), `--check N` (run only check N)
269
+ - **Paths:** All resolved relative to script location — no hardcoded absolute paths
270
+ - **CI integration:** Run before tests in the CI pipeline
271
+
272
+ ### Common Checks
273
+
274
+ | Check | Severity | What it catches |
275
+ |-------|----------|----------------|
276
+ | Help slug integrity | FAIL | WORKFLOW_TIPS slugs that don't match user-manual headings |
277
+ | md/tex section parity | WARN | Structural divergence between markdown and LaTeX versions |
278
+ | File path references | FAIL | Backtick-quoted paths in docs that don't exist on disk |
279
+ | Class/method references | FAIL | Code references in architecture docs that don't match source |
280
+ | Count accuracy | WARN | Claimed counts vs actual (data sources, templates, etc.) |
281
+ | Env var completeness | WARN | Settings fields missing from documentation |
@@ -0,0 +1,100 @@
1
+ # Project Documentation Conventions
2
+
3
+ > Shared conventions for outward-facing documentation: project READMEs, user manuals, architecture docs, deploy guides, and in-app help. Ensures consistency across Scout, council packages, and future projects.
4
+ >
5
+ > Companion to `system-documentation.md` (which covers internal Task Management docs like CLAUDE.md, SKILL.md, and component catalogues).
6
+
7
+ ---
8
+
9
+ ## Governed Documents
10
+
11
+ Every document governed by these conventions carries a tag on its first line:
12
+
13
+ - **Markdown:** `<!-- Governed by: skills/shared/project-documentation.md -->`
14
+ - **LaTeX:** `% Governed by: skills/shared/project-documentation.md`
15
+
16
+ ### Registry
17
+
18
+ | Project | File | Type |
19
+ |---------|------|------|
20
+ | Scout | `README.md` | README |
21
+ | Scout | `docs/user-manual.md` | User manual |
22
+ | Scout | `docs/architecture.md` | Architecture |
23
+ | Scout | `deploy/README.md` | Deploy guide |
24
+ | Scout | `docs/user-manual.tex` | LaTeX manual |
25
+ | Scout | `docs/scout-overview/scout-overview.tex` | Beamer deck |
26
+ | Task Management | `docs/user-manual/user-manual.tex` | LaTeX manual |
27
+ | Task Management | `docs/setup-overview/setup-overview.tex` | Beamer deck |
28
+ | Task Management | `docs/setup-overview/setup-overview-public.tex` | Beamer deck (public) |
29
+ | Task Management | `public/public-repo/README.md` | README (public) |
30
+ | Task Management | `public/public-repo/docs/getting-started.md` | Getting started |
31
+ | Task Management | `public/public-repo/docs/council-mode.md` | Feature guide |
32
+ | Task Management | `public/public-repo/docs/biblio-setup.md` | Setup guide |
33
+ | Task Management | `public/public-repo/docs/setup.md (legacy)` | Setup guide |
34
+
35
+ ### Tagging Protocol
36
+
37
+ When **creating** new outward-facing documentation (README, user manual, architecture doc, deploy guide, Beamer deck, or LaTeX manual):
38
+
39
+ 1. Add the appropriate tag as the very first line of the file
40
+ 2. Add the file to the registry table above
41
+
42
+ When **auditing** a project's documentation (via `/sync-repo scout`, `/update-project-doc`, or manually):
43
+
44
+ 1. Grep for `Governed by: skills/shared/project-documentation.md` across all `.md` and `.tex` files
45
+ 2. Flag any outward-facing docs that lack the tag — these are candidates for tagging
46
+ 3. Do not tag internal docs (CLAUDE.md, SKILL.md, `.context/` files, `log/` files, `docs/skills.md`, etc.) — those are governed by `system-documentation.md`
47
+
48
+ ---
49
+
50
+ ## The Documentation Suite
51
+
52
+ Every software project should have a README. Larger projects add docs as they grow. This table defines what each file covers and when to create it.
53
+
54
+ | Document | Create when | Audience | Covers |
55
+ |----------|------------|----------|--------|
56
+ | `README.md` | Always | Everyone | What it does, quick start, project structure |
57
+ | `docs/user-manual.md` | Web UI or CLI with 3+ workflows | End users | Every feature, step-by-step, with examples |
58
+ | `docs/architecture.md` | 5+ source files or non-obvious design | Maintainers | Service layers, data flow, design patterns |
59
+ | `deploy/README.md` | Remote deployment exists | DevOps / self | Infrastructure, secrets, CI/CD |
60
+ | In-app help (`/help` + tips) | Web UI exists | End users | Same content as user manual, rendered in-app |
61
+
62
+ **Principle:** Each document serves a distinct audience. If two docs say the same thing, one should be a pointer to the other.
63
+
64
+ ---
65
+
66
+ ## Content Conventions
67
+
68
+ Detailed conventions for each document type: [`project-documentation-content.md`](project-documentation-content.md)
69
+
70
+ Covers: README required sections, user manual structure, per-workflow pattern, architecture doc structure, deploy guide structure, in-app help system, library/package READMEs, CLI example conventions.
71
+
72
+ ## Format Conventions
73
+
74
+ Detailed conventions for formatting and presentation: [`project-documentation-format.md`](project-documentation-format.md)
75
+
76
+ Covers: ASCII diagrams, env var tables, tone by audience, LaTeX preamble and commands, Beamer decks (colour palette, TikZ, bullet styles), public/anonymized variants (sync markers, anonymization rules), automated validation (`validate_docs.py` pattern).
77
+
78
+ ---
79
+
80
+ ## Checklist for New Project Documentation
81
+
82
+ Before shipping any project documentation:
83
+
84
+ 1. **README exists** with all required sections
85
+ 2. **Live URL** linked prominently if hosted
86
+ 3. **ASCII diagram** shows end-to-end flow
87
+ 4. **Tech stack table** lists every major dependency
88
+ 5. **Setup is copy-pasteable** — tested from a clean state
89
+ 6. **CLI examples use real arguments** — no `$` prefix, no placeholders
90
+ 7. **Env vars documented** in consistent table format
91
+ 8. **File tree annotated** — comments explain non-obvious entries
92
+ 9. **Pointer table** links to detailed docs (user manual, architecture, deploy)
93
+ 10. **User manual** follows per-workflow pattern (URL → purpose → how to use → what you get)
94
+ 11. **Limitations section** with honest caveats (numbered, bold constraint + explanation)
95
+ 12. **In-app help** loads user manual at runtime (no content duplication)
96
+ 13. **LaTeX versions** use standard preamble, custom commands, booktabs tables
97
+ 14. **md/tex parity** — section structure matches between formats
98
+ 15. **Beamer decks** use 16:9, consistent colour palette, substantive frame titles
99
+ 16. **Public variants** anonymized (no names, no exact counts, sync markers for auto-generated content)
100
+ 17. **Validation script** checks for drift between docs and code
@@ -0,0 +1,138 @@
1
+ # Publication Output Conventions
2
+
3
+ > Table format, figure format, and output routing standards for publication-ready outputs.
4
+ > Referenced by `/data-analysis`, `/replication-package`.
5
+
6
+ ## Table Format: Booktabs Three-Line
7
+
8
+ All LaTeX tables use the `booktabs` three-line style unless a venue explicitly requires something else.
9
+
10
+ ### Standard Structure
11
+
12
+ ```latex
13
+ \begin{table}[htbp]
14
+ \centering
15
+ \caption{Descriptive title stating the finding}
16
+ \label{tab:descriptive-label}
17
+ \begin{tabular}{lcccc}
18
+ \toprule
19
+ & (1) & (2) & (3) & (4) \\
20
+ & OLS & FE & IV & IV-FE \\
21
+ \midrule
22
+ Treatment & 0.123*** & 0.098** & 0.145** & 0.112* \\
23
+ & (0.034) & (0.041) & (0.058) & (0.063) \\
24
+ Control A & 0.456 & 0.423 & 0.478 & 0.445 \\
25
+ & (0.089) & (0.092) & (0.095) & (0.098) \\
26
+ \midrule
27
+ Observations & 1,247 & 1,247 & 1,189 & 1,189 \\
28
+ R$^2$ & 0.234 & 0.312 & 0.198 & 0.289 \\
29
+ Controls & Yes & Yes & Yes & Yes \\
30
+ Fixed Effects & No & Yes & No & Yes \\
31
+ \bottomrule
32
+ \end{tabular}
33
+ \begin{tablenotes}[flushleft]
34
+ \footnotesize
35
+ \item \textit{Notes:} Standard errors in parentheses, clustered at the firm level.
36
+ * $p<0.10$, ** $p<0.05$, *** $p<0.01$.
37
+ \end{tablenotes}
38
+ \end{table}
39
+ ```
40
+
41
+ ### Rules
42
+
43
+ 1. **Three lines only:** `\toprule`, `\midrule`, `\bottomrule`. No `\hline`, no vertical lines.
44
+ 2. **Standard errors in parentheses** below coefficients. Never brackets.
45
+ 3. **Star convention:** `* p<0.10, ** p<0.05, *** p<0.01` (state in table notes).
46
+ 4. **Column headers:** Model number in row 1, specification name in row 2.
47
+ 5. **Panel labels:** Use `\multicolumn` with `Panel A:`, `Panel B:` for multi-panel tables.
48
+ 6. **Footnotes:** Use `tablenotes` environment or `\smallskip\footnotesize` block below the table.
49
+ 7. **Alignment:** `l` for row labels, `c` for numeric columns. Use `S` (siunitx) for decimal alignment if available.
50
+ 8. **Number formatting:** Thousands separator (1,247 not 1247). 3 decimal places for coefficients, 2 for R².
51
+
52
+ ## Figure Format
53
+
54
+ ### Export Standards
55
+
56
+ | Format | Use case |
57
+ |--------|----------|
58
+ | PDF | Default for all figures (vector, lossless) |
59
+ | PNG | Raster plots, heatmaps (300+ DPI) |
60
+ | SVG | Web/HTML output only |
61
+
62
+ ### Dimensions
63
+
64
+ - **Single column:** 6 × 4 inches (width × height)
65
+ - **Full width:** 10 × 6 inches
66
+ - **Square (scatter/correlation):** 6 × 6 inches
67
+ - **Panel figures:** Scale width proportionally; maintain consistent height across panels
68
+
69
+ ### Style
70
+
71
+ - Greyscale-safe colour palettes (figures should be readable in B&W print)
72
+ - Minimal gridlines (light grey, major ticks only)
73
+ - Axis labels with units: "Revenue (USD millions)"
74
+ - Legend inside plot area when space allows; outside otherwise
75
+ - Title in the LaTeX `\caption{}`, not baked into the figure image
76
+
77
+ ### LaTeX Inclusion
78
+
79
+ ```latex
80
+ \begin{figure}[htbp]
81
+ \centering
82
+ \includegraphics[width=\textwidth]{figures/fig1.pdf}
83
+ \caption{Descriptive title stating what the figure shows}
84
+ \label{fig:descriptive-label}
85
+ \end{figure}
86
+ ```
87
+
88
+ ## Output Routing
89
+
90
+ ### Directory Structure
91
+
92
+ ```
93
+ project/
94
+ ├── code/ ← scripts that generate output
95
+ ├── data/
96
+ │ ├── raw/ ← READ-ONLY source data
97
+ │ ├── processed/ ← cleaned/transformed data
98
+ │ └── synthetic/ ← generated test data
99
+ ├── output/ ← intermediate results (not for paper)
100
+ │ ├── tables/ ← .csv, .rds, .pkl intermediate tables
101
+ │ └── figures/ ← exploratory/draft figures
102
+ └── paper/ ← Overleaf-synced, LaTeX only
103
+ ├── tables/ ← .tex table files (generated by code)
104
+ └── figures/ ← .pdf/.png figure files (generated by code)
105
+ ```
106
+
107
+ ### Routing Rules
108
+
109
+ 1. **Scripts** live in `code/` or `src/`, never in `paper/`.
110
+ 2. **Publication tables** (`.tex`) go directly to `paper/tables/`. Generated by code, referenced via `\input{tables/table1.tex}`.
111
+ 3. **Publication figures** (`.pdf`/`.png`) go directly to `paper/figures/`. Generated by code, referenced via `\includegraphics{figures/fig1.pdf}`.
112
+ 4. **Intermediate outputs** (exploratory plots, draft tables, `.csv` summaries) go to `output/`. These are not committed to the paper directory.
113
+ 5. **Never hard-code results** in `.tex` files. All numbers come from `\input{}` or generated files.
114
+
115
+ ### Naming Conventions
116
+
117
+ | File type | Pattern | Example |
118
+ |-----------|---------|---------|
119
+ | Main results table | `table{N}.tex` | `table1.tex` |
120
+ | Named table | `tab-{name}.tex` | `tab-descriptives.tex` |
121
+ | Appendix table | `tableA{N}.tex` | `tableA1.tex` |
122
+ | Main figure | `fig{N}.pdf` | `fig1.pdf` |
123
+ | Named figure | `fig-{name}.pdf` | `fig-event-study.pdf` |
124
+ | Appendix figure | `figA{N}.pdf` | `figA1.pdf` |
125
+
126
+ ### Inline Statistics
127
+
128
+ For inline numbers (sample sizes, test statistics, p-values), export a `.tex` file with `\newcommand` definitions:
129
+
130
+ ```latex
131
+ % Generated by code/analysis.R — do not edit manually
132
+ \newcommand{\Nobs}{1,247}
133
+ \newcommand{\maineffect}{0.123}
134
+ \newcommand{\mainse}{0.034}
135
+ \newcommand{\mainpval}{0.001}
136
+ ```
137
+
138
+ Include in the paper preamble with `\input{tables/inline-stats.tex}` and reference as `$N = \Nobs$`.
@@ -0,0 +1,70 @@
1
+ # Quality Scoring Framework
2
+
3
+ > Shared framework for numeric quality scoring across review skills. Each skill has its own rubric in `references/quality-rubric.md` — this file defines the common structure.
4
+
5
+ ## How It Works
6
+
7
+ 1. **Start at 100.** Every artefact begins with a perfect score.
8
+ 2. **Deduct per issue.** Each issue found subtracts points based on its severity tier (see rubric).
9
+ 3. **Floor at 0.** Score cannot go negative.
10
+ 4. **Apply verdict.** Map the final score to a verdict using the thresholds below.
11
+
12
+ ## Severity Tiers
13
+
14
+ | Tier | Deduction range | Definition |
15
+ |------|----------------|------------|
16
+ | **Blocker** | -100 | Artefact is broken — cannot compile, render, or run. Single blocker = automatic 0. |
17
+ | **Critical** | -15 to -25 | Will be noticed by reviewers/users. May cause rejection or misinterpretation. |
18
+ | **Major** | -5 to -14 | Noticeable quality issue. Degrades professionalism or correctness. |
19
+ | **Minor** | -1 to -4 | Polish issue. Individually harmless, accumulates. |
20
+
21
+ Each skill's rubric maps specific issues to a tier and exact deduction. When an issue doesn't fit an existing rubric entry, classify it by tier definition and use the midpoint of the range.
22
+
23
+ ## Verdicts and Thresholds
24
+
25
+ | Score | Verdict | Meaning |
26
+ |-------|---------|---------|
27
+ | **95-100** | Ship | Ready for submission, sharing, or publication. |
28
+ | **90-94** | Ship with notes | Minor issues noted in report — acceptable to proceed. |
29
+ | **80-89** | Revise | Meaningful issues that should be fixed before sharing. |
30
+ | **60-79** | Revise (major) | Significant problems. Do not share in current state. |
31
+ | **0-59** | Blocked | Fundamental issues. Artefact needs substantial rework. |
32
+
33
+ ## Deduction Rules
34
+
35
+ - **One deduction per unique issue.** If the same typo appears 5 times, deduct once for the pattern + note the count.
36
+ - **Repeated minor issues escalate.** 5+ instances of the same minor issue → treat as one major deduction instead of 5 minor ones.
37
+ - **Blockers are absolute.** Any single blocker sets the score to 0 regardless of other findings.
38
+ - **N/A categories don't penalise.** If a rubric category doesn't apply (e.g., no TikZ diagrams), skip it — don't award bonus points.
39
+
40
+ ## Score Block Template
41
+
42
+ Include this block at the top of every review report, after the summary table:
43
+
44
+ ```markdown
45
+ ## Quality Score
46
+
47
+ | Metric | Value |
48
+ |--------|-------|
49
+ | **Score** | XX / 100 |
50
+ | **Verdict** | Ship / Ship with notes / Revise / Revise (major) / Blocked |
51
+
52
+ ### Deductions
53
+
54
+ | # | Issue | Tier | Deduction | Category |
55
+ |---|-------|------|-----------|----------|
56
+ | 1 | [description] | Critical | -15 | [rubric category] |
57
+ | 2 | [description] | Minor | -2 | [rubric category] |
58
+ | ... | | | | |
59
+ | | **Total deductions** | | **-XX** | |
60
+ ```
61
+
62
+ ## Applying the Framework
63
+
64
+ When a skill says "Apply quality scoring":
65
+
66
+ 1. Read the skill's `references/quality-rubric.md` for issue-to-deduction mappings.
67
+ 2. As you review, log each issue with its rubric entry and deduction.
68
+ 3. Sum deductions, compute final score (100 - total), apply verdict.
69
+ 4. Insert the Score Block into the report at the designated location.
70
+ 5. In the Recommendations section, prioritise fixes by deduction size (biggest impact first).
@@ -0,0 +1,77 @@
1
+ # Shared: Reference Resolution & Filing Sequence
2
+
3
+ Canonical lookup and filing sequence for all bibliography skills (`/literature`, `/bib-validate`, `/bib-parse`, `/bib-coverage`). Reference this module instead of reimplementing lookup logic.
4
+
5
+ ## Resolution Order (Lookup)
6
+
7
+ When resolving a reference (checking if it exists, finding metadata, verifying DOIs), search in this order:
8
+
9
+ 1. **Zotero** (active write target) — `mcp__refpile__search_library` by title/author. If found, reuse its `citationKey`.
10
+ 2. **Paperpile** (read-only cross-reference) — `mcp__paperpile__search_library` by title/author. If found, note for status reporting. Paperpile is read-only; items cannot be added via MCP.
11
+ 3. **Bibliography MCP** (scholarly sources) — `scholarly_search` across OpenAlex + Scopus + WoS for metadata enrichment.
12
+ 4. **Crossref API** (DOI fallback) — `curl -sL "https://api.crossref.org/works?query.bibliographic=[URL-encoded title+author]&rows=3"` for DOI resolution.
13
+ 5. **Web search** (last resort) — `WebSearch` for papers not found in any structured source.
14
+
15
+ **Graceful degradation:** If any MCP is unavailable, skip it with a warning and continue with the remaining sources.
16
+
17
+ ## Status Categories
18
+
19
+ Based on where a reference is found, assign one of these statuses:
20
+
21
+ | Zotero | Paperpile | .bib | Status | Action |
22
+ |--------|-----------|------|--------|--------|
23
+ | Yes | Yes | Yes | `HEALTHY` | No action needed |
24
+ | Yes | — | Yes | `HEALTHY` | No action needed |
25
+ | No | Yes | Yes | `MIGRATE_TO_ZOTERO` | Auto-add to Zotero from Paperpile metadata |
26
+ | No | No | Yes | `DRIFT` | In local .bib but not in any reference manager — auto-add to Zotero |
27
+ | Yes | — | No | `EXPORT_GAP` | In Zotero but not in local .bib — export or cite |
28
+ | No | Yes | No | `EXPORT_GAP` | In Paperpile but not in local .bib — export or cite |
29
+ | No | No | No | `MISSING` | Not found anywhere — add via filing sequence below |
30
+
31
+ ## Filing Sequence (Adding Items)
32
+
33
+ When a skill needs to add a reference to Zotero, follow this sequence:
34
+
35
+ ### 1. Add to Zotero
36
+
37
+ Call `mcp__refpile__add_item` with full metadata (title, authors, year, journal/booktitle, DOI, itemType).
38
+
39
+ ### 2. File into topic collection
40
+
41
+ Resolve the topic collection key from `zotero-collections.md` (in the project's research directory or the Task Management `.context/resources/` folder):
42
+
43
+ - **Explicit argument:** If the user passed `--topic <slug>`, use that slug to look up the collection key.
44
+ - **Project context:** Read the project's `CLAUDE.md` or topic frontmatter for the Atlas topic slug.
45
+ - **Directory name:** If inside a research project directory, use the directory name as the topic slug.
46
+
47
+ Call `mcp__refpile__add_to_collection(collection_key=<resolved_key>)` to file the item into the topic-specific collection.
48
+
49
+ ### 3. Also tag for review
50
+
51
+ Call `mcp__refpile__add_to_collection` with the `_Needs Review` collection key. Items go into **both** the topic collection and `_Needs Review` — the topic collection for organisation, `_Needs Review` for the user to verify.
52
+
53
+ ### 4. Report Paperpile gaps
54
+
55
+ List items that need manual import into Paperpile (read-only MCP — user must add via Paperpile app or browser extension).
56
+
57
+ ### 5. Fallback
58
+
59
+ If the topic collection key cannot be resolved (no `--topic` argument, no project context, slug not found in `zotero-collections.md`), file into `_Needs Review` only and warn:
60
+
61
+ > "Could not resolve topic collection — filed into `_Needs Review` only. Specify `--topic <slug>` or ensure the project has an Atlas topic."
62
+
63
+ ## Post-Run Maintenance
64
+
65
+ After any skill run that adds items to Zotero:
66
+
67
+ 1. **Update `zotero-collections.md`** — increment item counts for affected collections.
68
+ 2. **Report migration candidates** — list items found in Paperpile but not in Zotero as `MIGRATE_TO_ZOTERO`. Offer to auto-add them.
69
+
70
+ ## Skills That Reference This Module
71
+
72
+ | Skill | Uses Resolution | Uses Filing | Notes |
73
+ |-------|----------------|-------------|-------|
74
+ | `/literature` | Phase 1 (pre-search check) | Phase 6c (sync to managers) | Full workflow |
75
+ | `/bib-validate` | Ref Manager Cross-Reference | Fix Mode (auto-add) | Reports + optional fixes |
76
+ | `/bib-parse` | Phase 3.5 (library check) | Phase 6.5 (sync to Zotero) | PDF extraction workflow |
77
+ | `/bib-coverage` | Collection comparison | — | Read-only comparison |