- name
- codex-claude-academic-skills
- description
- Chinese-first academic research skills for paper writing, Office document generation, and scientific computing (MATLAB/Python)
- triggers
- ["help me write a research paper in Chinese","generate academic PPT from my paper","create literature review Word document","run MATLAB simulation for my experiment","polish my paper abstract and introduction","make a thesis defense presentation","analyze scientific data with Python","respond to reviewer comments"]
# Codex Claude Academic Skills
> Skill by [ara.so](https://ara.so) — Codex Skills collection.
A collection of three complementary skills for Chinese academic researchers covering paper writing, academic Office document generation, and scientific computing. All skills work in both Claude Code and Codex platforms.
## What This Project Does
This project provides three specialized skills for academic workflows:
1. **research-writing-skill**: Paper writing, editing, and reviewer response in Chinese
2. **office-academic-skill**: Generate editable Word reports and PowerPoint presentations
3. **scientific-toolkit-skill**: Scientific computing with MATLAB/Python and publication-quality figures
The skills are designed to work together across the research pipeline: data analysis → paper writing → presentation generation.
## Installation
### For Claude Code
```bash
# Clone the repository
git clone https://github.com/zLanqing/codex-claude-academic-skills.git
# Install all three skills globally
cd codex-claude-academic-skills
cp -r research-writing-skill ~/.claude/skills/
cp -r office-academic-skill ~/.claude/skills/
cp -r scientific-toolkit-skill ~/.claude/skills/
# Or install via plugin (if supported)
/plugin install zLanqing/codex-claude-academic-skills
```
### For Codex
```bash
# Install to global skills directory
cd codex-claude-academic-skills
cp -r research-writing-skill ~/.codex/skills/
cp -r office-academic-skill ~/.codex/skills/
cp -r scientific-toolkit-skill ~/.codex/skills/
# Or load temporarily with plugin URL
codex --plugin-url https://github.com/zLanqing/codex-claude-academic-skills
```
### Project-Level Installation
Place skill directories in your project root:
```bash
mkdir -p .claude/skills/
cp -r path/to/research-writing-skill .claude/skills/
# Or for Codex
mkdir -p .codex/skills/
cp -r path/to/office-academic-skill .codex/skills/
```
## Skill 1: research-writing-skill
### Core Capabilities
- Write paper sections: abstract, introduction, related work, methods, experiments, discussion, conclusion
- Edit and polish existing drafts for logic, consistency, and terminology
- Generate reviewer response letters (rebuttal)
- Plan paper structure from vague ideas to detailed outlines
### Usage Patterns
**Writing a new section:**
```python
# User prompt example:
# "帮我写一个关于BOTDR传感器的方法章节,已有的实验数据在data.csv"
# The skill will:
# 1. Ask for key information (sensor parameters, measurement setup)
# 2. Check if data.csv exists and analyze it
# 3. Draft the methods section in Chinese
# 4. Preserve English terms: BOTDR, Brillouin scattering, etc.
# 5. Mark inferred vs. confirmed information
```
**Polishing existing text:**
```python
# User provides a Chinese draft:
"""
我们提出了一种新的算法,它很有效,实验结果显著优于传统方法。
"""
# Skill rewrites to:
"""
我们提出了基于小波去噪的 BGS 重构算法。在 100 组实验数据集上,
相比传统高斯拟合方法,本方法的温度测量误差从 ±2.5°C 降低至 ±0.8°C,
空间分辨率从 1m 提升至 0.5m。
"""
# (Removes vague words, adds measurable baselines)
```
**Reviewer response:**
```python
# User: "审稿人说我的实验样本量不够,帮我回复"
# Skill generates structured response:
"""
**Reviewer Comment:**
The sample size (n=30) is insufficient for statistical significance.
**Response:**
感谢审稿人的建议。我们已补充实验至 n=100(新增数据见附录 A)。
更新后的统计检验结果(t-test, p<0.01)已添加至第 4.2 节表 3。
修订稿中已说明样本量选择依据 Cohen's d 效应量计算(d=0.85, power=0.95)。
**Changes in manuscript:**
- Line 203-205: 补充样本量计算依据
- Table 3: 更新统计检验结果
- Appendix A: 新增 70 组实验数据
"""
```
### Key Principles
- **Chinese-first**: Explanations, body text in Chinese; preserve English for paper titles, formulas, variable names, software commands, citations
- **No fabrication**: Never invent DOI, journal names, experimental values, or figure numbers
- **Source marking**: Label claims as "from user", "inferred", "suggested extension", or "original text"
- **Measurable claims**: Replace "significant improvement" with "error reduced from X to Y"
### Reference Files
The skill includes built-in references under `paper-writing/`:
```
references/
├── section_rhetorical_moves/
│ ├── abstract.md # IMRaD structure for abstracts
│ ├── introduction.md # Hook → Gap → Contribution pattern
│ ├── methods.md # Replicability checklist
│ └── results.md # Figure-first narrative
├── writing_checklists/
│ ├── before_submission.md # Pre-submission self-check
│ └── revision_guide.md # Responding to major revisions
├── figure_templates/
│ └── multi_panel.md # Standards for composite figures
└── brainstorming_guide.md # From idea to paper blueprint
```
## Skill 2: office-academic-skill
### Core Capabilities
**Word Documents:**
- PDF → structured literature review report (.docx)
- Generate editable reports with headings, tables, figure placeholders, citations
- Version-controlled editing of existing .docx files
**PowerPoint Presentations:**
- Literature report slides, group meeting presentations
- Thesis defense slides (proposal, mid-term, final defense)
- Scientific poster presentations, outreach slides
### Usage Patterns
**Generate literature report from PDF:**
```python
# User: "把这篇论文转成文献阅读报告"
# Uploads: paper.pdf
# Skill workflow:
# 1. Extract text and figures from PDF
# 2. Generate structured report.docx:
from docx import Document
from docx.shared import Pt, Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document()
# Title
title = doc.add_heading('文献阅读报告', level=1)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
# Metadata section
doc.add_heading('基本信息', level=2)
table = doc.add_table(rows=4, cols=2)
table.cell(0, 0).text = '标题'
table.cell(0, 1).text = 'Distributed Optical Fiber Sensing Using BOTDR'
table.cell(1, 0).text = '作者'
table.cell(1, 1).text = 'Zhang, Y., et al.'
table.cell(2, 0).text = '期刊'
table.cell(2, 1).text = 'J. Lightwave Tech., 2023, 41(5), 1234-1245'
table.cell(3, 0).text = 'DOI'
table.cell(3, 1).text = '10.1109/JLT.2023.1234567'
# Main sections
doc.add_heading('研究背景', level=2)
doc.add_paragraph('【来源: 论文第1节】分布式光纤传感技术...')
doc.add_heading('核心方法', level=2)
doc.add_paragraph('【来源: 论文图2及第3.1节】本文提出...')
doc.add_paragraph('[图2占位符: BOTDR系统示意图]')
doc.add_heading('实验结果', level=2)
doc.add_paragraph('【来源: 论文表1】在50km光纤上测试...')
doc.add_heading('个人评价', level=2)
doc.add_paragraph('【评价】优点: 空间分辨率达到0.5m;局限: 仅测试单模光纤...')
doc.save('文献报告_BOTDR_2023.docx')
```
**Create thesis defense PPT:**
```python
# User: "用我的论文PDF生成答辩PPT,用学校模板template.pptx"
# Skill workflow:
from pptx import Presentation
from pptx.util import Inches, Pt
# 1. Clone template master slides
template = Presentation('template.pptx')
prs = Presentation()
prs.slide_master = template.slide_master # Preserve school branding
# 2. Extract paper structure
# Reads paper.pdf → sections, figures, key results
# 3. Generate slides with action titles
slide = prs.slides.add_slide(prs.slide_layouts[1])
title = slide.shapes.title
title.text = 'BOTDR空间分辨率提升至0.5m' # Conclusion, not topic
# Add figure placeholder
left = Inches(1)
top = Inches(2)
pic_placeholder = slide.shapes.add_textbox(left, top, Inches(8), Inches(4))
pic_placeholder.text = '[插入论文图3: 分辨率对比实验结果]'
# Add source annotation
source = slide.shapes.add_textbox(Inches(0.5), Inches(6.5), Inches(9), Inches(0.3))
source.text = '数据来源: 论文第4.2节, 表2'
source.text_frame.paragraphs[0].font.size = Pt(10)
prs.save('答辩PPT_初稿.pptx')
# 4. Run overflow check (built-in script)
# python references/thesis-defense-pptx/scripts/check_text_overflow.py 答辩PPT_初稿.pptx
```
**Edit existing PowerPoint:**
```python
# User: "把第5页的标题改成中文,图表移到右边"
from pptx import Presentation
prs = Presentation('答辩PPT_初稿.pptx')
slide = prs.slides[4] # 0-indexed
# Change title
slide.shapes.title.text = '实验验证与结果分析'
# Move figure to right half
for shape in slide.shapes:
if shape.has_text_frame and '[插入论文图' in shape.text:
shape.left = Inches(5)
shape.top = Inches(1.5)
shape.width = Inches(4)
prs.save('答辩PPT_修订.pptx')
```
### PPT Quality Standards
The skill enforces these rules:
1. **Action titles**: "温度测量误差降低60%" not "实验结果"
2. **One idea per slide**: No bullet-point essays
3. **Figure-driven**: Technical claims backed by charts/equations
4. **Scientific rigor**: Axes labels, units, legends, data sources
5. **Academic aesthetics**: White/neutral backgrounds, color for emphasis only
### Built-in Tools
Under `references/`:
```
office-docx/
├── ooxml_validator.py # Check DOCX against Office Open XML schema
└── schemas/ # XSD schemas for validation
office-pptx/
├── pptx_structure.md # PPTX OOXML anatomy
└── layout_examples/ # Common academic slide layouts
thesis-defense-pptx/scripts/
├── extract_thesis_context.py # Parse LaTeX/PDF for key content
├── clone_template.py # Preserve master slide styles
├── export_slides_png.py # Slide → PNG for review
└── check_text_overflow.py # Detect text box overflow
```
## Skill 3: scientific-toolkit-skill
### Core Capabilities
**MATLAB/Octave:**
- Signal/image processing, FFT, filtering, matrix operations
- Simulation, numerical methods
- Publication-quality figure export
**Python Scientific Stack:**
- **NumPy, SciPy**: Numerical computing, optimization
- **pandas**: Data manipulation and analysis
- **matplotlib, seaborn**: Publication-grade plots
- **scikit-learn**: Machine learning (classification, regression, clustering, PCA)
- **statsmodels**: Statistical modeling, time series
- **SymPy**: Symbolic math, equation derivation
- **QuTiP**: Quantum optics simulations
- **pymatgen**: Materials science (crystal structures, band structure)
- **TimesFM**: Time series forecasting
- **NetworkX**: Graph and network analysis
- **Astropy**: Astronomical/optical imaging data
**Literature & Citations:**
- Search: arXiv, PubMed, CrossRef, Semantic Scholar, OpenAlex
- DOI → BibTeX conversion, citation validation
### Usage Patterns
**MATLAB signal processing:**
```matlab
% User: "帮我用MATLAB分析这个BOTDR信号,提取BGS并计算温度"
% Skill generates:
% === BOTDR Signal Analysis ===
% Parameters (用户需确认):
fs = 1e9; % 采样率 [Hz] - 来源: 用户确认
fiber_length = 50e3; % 光纤长度 [m] - 来源: 用户确认
v_B0 = 10.86e9; % 参考Brillouin频移 [Hz] - 来源: 文献默认值 (SMF-28)
C_T = 1.0e6; % 温度系数 [Hz/°C] - 来源: 文献默认值
% Load signal
data = load('botdr_signal.mat');
raw_signal = data.raw; % [时间 x 频率扫描]
% Extract BGS (Brillouin Gain Spectrum)
[n_points, n_freq] = size(raw_signal);
freq_axis = linspace(10.5e9, 11.5e9, n_freq); % 频率扫描范围 [Hz]
BGS_peak_freq = zeros(n_points, 1);
for i = 1:n_points
[~, peak_idx] = max(raw_signal(i, :));
BGS_peak_freq(i) = freq_axis(peak_idx);
end
% Convert to temperature
delta_v_B = BGS_peak_freq - v_B0; % 频移差 [Hz]
temperature = delta_v_B / C_T; % 温度 [°C]
% Calculate spatial resolution
spatial_res = 0.5 * 3e8 / fs; % = c/(2*fs) [m]
% Plot results
figure('Position', [100, 100, 800, 600]);
subplot(2,1,1);
plot(1:n_points, BGS_peak_freq/1e9, 'LineWidth', 1.5);
xlabel('测量点', 'FontSize', 12);
ylabel('Brillouin频移 (GHz)', 'FontSize', 12);
title('沿光纤的BGS频移分布', 'FontSize', 14);
grid on;
subplot(2,1,2);
plot((1:n_points)*spatial_res/1000, temperature, 'LineWidth', 1.5);
xlabel('距离 (km)', 'FontSize', 12);
ylabel('温度 (°C)', 'FontSize', 12);
title(sprintf('温度分布 (空间分辨率: %.2f m)', spatial_res), 'FontSize', 14);
grid on;
% Export figure for paper
print('BGS_temperature_profile.png', '-dpng', '-r300');
% 【注释】未编造数据,所有物理量已标注来源
```
**Python data analysis with scikit-learn:**
```python
# User: "用机器学习分类这些光谱数据,特征在features.csv,标签在labels.csv"
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import classification_report, confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
# Load data
features = pd.read_csv('features.csv') # 假设每行是一个光谱样本
labels = pd.read_csv('labels.csv').values.ravel()
# Split dataset
X_train, X_test, y_train, y_test = train_test_split(
features, labels, test_size=0.2, random_state=42, stratify=labels
)
# Preprocessing
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
GitHubで見る