skills/import-content/SKILL.md
Set up script-generated content that documents import directly. Use when adding tables, figures, or numeric results to papers or reports. Prevents manual transcription errors.
npx skillsauth add AMindToThink/claude-code-settings import-contentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Core rule: Never hand-copy numbers into documents. Scripts generate output files, documents import them. This eliminates transcription errors.
The target document is: $ARGUMENTS
Read the target document and find any tables, numeric results, or data-driven content that should come from a script. Look for:
Check if a script already generates these numbers. Search for:
results/tables/, results/, or similar output directories\input{} or include directives in the documentIf no script exists, create one that:
Generate only the tabular body (not the full table environment). The document keeps \begin{table}, \caption{}, \label{}.
Output file (results/tables/my_table.tex):
% Generated by: scripts/my_analysis.py --run-tag my_tag
% Data source: results/my_data/summary.json
\begin{tabular}{@{}lrrr@{}}
\toprule
Metric & prompt\_gen & resp\_gen & story\_gen \\
\midrule
Our metric & +0.683 & +0.437 & +0.405 \\
Baseline & +0.728 & +0.532 & +0.633 \\
\bottomrule
\end{tabular}
The document includes it:
\begin{table}[t]
\centering
\caption{My caption here.}
\label{tab:my-table}
\input{../results/tables/my_table.tex}
\end{table}
Markdown has no native include mechanism, so use marker comments that a script can find and replace. The table lives inline in the document (preserving readability) but is populated by the script, never by hand.
In the document, wrap each table with BEGIN/END markers:
Some prose introducing the results:
<!-- BEGIN GENERATED TABLE: my_table -->
<!-- END GENERATED TABLE: my_table -->
More prose continues here...
The generating script writes both:
.md file (for diffing/reference):<!-- Generated by: scripts/my_analysis.py --run-tag my_tag -->
<!-- Data source: results/my_data/summary.json -->
| Metric | prompt_gen | resp_gen | story_gen |
|--------|-----------|---------|----------|
| Our metric | +0.683 | +0.437 | +0.405 |
| Baseline | +0.728 | +0.532 | +0.633 |
--update-paper (or similar) flag that does a regex replace of everything between BEGIN and END for each table name.The update flow is always: run the script, it reads data and writes into the document. Never edit the content between markers by hand.
Initial wiring: When first adding markers to a document with existing hand-written tables, create a one-time migration script that finds each table and wraps it with the appropriate BEGIN/END markers. Then run the generating script with --update-paper to replace the hand-written content with authoritative data.
Replace hand-written content with the import directive.
For LaTeX:
\begin{table}, \caption, \label in the document\begin{tabular}...\end{tabular} block with \input{path/to/generated.tex}\graphicspath or relative paths resolve correctlyFor Markdown:
<!-- BEGIN GENERATED TABLE: name --> / <!-- END GENERATED TABLE: name --> markerscd paper && latexmk -pdf)--update-paper flag write between the markersIf a script computed results but never saved them to a file (e.g., only printed to stdout, or run ad-hoc), the numbers may still exist in Claude Code's conversation logs. These logs store all tool outputs including bash stdout.
Where logs live: ~/.claude/projects/<project-path>/<conversation-uuid>.jsonl
Log format: JSONL, one JSON object per line. Tool outputs are in entries with "type": "tool_result" and the stdout is in toolUseResult.stdout.
Search tool: Use the trustable script ~/.claude/.claude-tools/search-claude-logs.py to search logs:
~/.claude/.claude-tools/search-claude-logs.py "pass@1.*0.432" --context 5
~/.claude/.claude-tools/search-claude-logs.py "power analysis" --project ~/.claude/projects/-home-user-myproject
It auto-detects the project from cwd, searches all conversation JSONL files, and shows matching tool outputs with context.
Recovery procedure:
search-claude-logs.py using distinctive numbers or keywords from the missing resultsWhen to use log recovery vs. rerunning: If the experiment was cheap (minutes), rerunning with proper JSON output is simpler and more trustworthy. If the experiment was expensive (hours of GPU time), log recovery is the right call — that's the whole reason to do this.
This is a backup for results computed before the "always save structured output" protocol was in place. It should never be the primary data source for new work.
Every generated file MUST start with:
% Generated by: <script-path> <arguments>
% Data source: <input-data-path>
For Markdown, use <!-- --> comments instead of %.
development
Use when the user asks to check, audit, or improve a website or web project for accessibility (a11y), WCAG compliance, screen reader support, keyboard navigation, color contrast, or alt text. Triggers a plan-mode investigation against the TeachAccess design and code checklists, then implements approved fixes.
development
--- name: make-anonymous-branch description: Use when preparing a research repo for double-blind submission via anonymous.4open.science (ICML/NeurIPS/ICLR/workshop). Builds a single `anon-submission` branch with code+data+paper, scrubs identity leaks (author names, home paths, emails, wandb metadata, PDF author fields), patches LaTeX for pdf.js compatibility, and leaves `main` untouched. Triggers: "make an anonymous branch", "anonymize my repo for X submission", "set up anonymous.4open.science",
development
Translate math (formulas, estimators, algorithms) into code so the implementation faithfully matches what the source actually specifies. Use when writing code from a formula, reviewing an LLM-generated implementation of a formula, debugging a numerical mismatch with a paper, designing a new metric/estimator, or refactoring an existing math-heavy computation. Especially load-bearing whenever aggregation operators (sums, means, expectations, products, geometric means) appear over indices that can be reordered, or whenever the same English label can refer to multiple non-equivalent estimators (e.g. ratio-of-means vs mean-of-ratios, micro-average vs macro-average, sample-weighted vs unweighted). Prevents the failure mode where a code path silently implements the wrong estimator under the same name as the intended one.
development
Use when the user asks to review, find, summarize, or check Claude Code chat transcripts from a past date or time range ("review my chats from May 1st", "what was I working on yesterday", "any unfinished sessions this week"). Reads transcripts under `~/.claude/projects/`, handles local-time vs UTC correctly so late-evening sessions don't get dropped, and flags chats whose last assistant turn looks like an unanswered question.