一键导入
codex-claude-academic-skills
Chinese-first academic research skills for paper writing, Office document generation, and scientific computing (MATLAB/Python)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Chinese-first academic research skills for paper writing, Office document generation, and scientific computing (MATLAB/Python)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| 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"] |
Skill by 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.
This project provides three specialized skills for academic workflows:
The skills are designed to work together across the research pipeline: data analysis → paper writing → presentation generation.
# 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
# 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
Place skill directories in your project root:
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/
Writing a new section:
# 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:
# 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:
# 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 组实验数据
"""
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
Word Documents:
PowerPoint Presentations:
Generate literature report from PDF:
# 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:
# 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:
# 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')
The skill enforces these rules:
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
MATLAB/Octave:
Python Scientific Stack:
Literature & Citations:
MATLAB signal processing:
% 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:
# 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)
X_test_scaled = scaler.transform(X_test)
# Model training with grid search
param_grid = {
'C': [0.1, 1, 10, 100],
'gamma': ['scale', 'auto', 0.001, 0.01],
'kernel': ['rbf', 'linear']
}
svm = SVC(random_state=42)
grid_search = GridSearchCV(svm, param_grid, cv=5, scoring='f1_macro', n_jobs=-1)
grid_search.fit(X_train_scaled, y_train)
# Best model
best_model = grid_search.best_estimator_
print(f"最佳参数: {grid_search.best_params_}")
print(f"交叉验证F1分数: {grid_search.best_score_:.3f}")
# Evaluate on test set
y_pred = best_model.predict(X_test_scaled)
print("\n测试集分类报告:")
print(classification_report(y_test, y_pred))
# Confusion matrix
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',
xticklabels=np.unique(labels),
yticklabels=np.unique(labels))
plt.xlabel('预测标签', fontsize=12)
plt.ylabel('真实标签', fontsize=12)
plt.title('混淆矩阵 (SVM分类器)', fontsize=14)
plt.tight_layout()
plt.savefig('confusion_matrix.png', dpi=300)
# 【注释】模型参数通过网格搜索确定,避免主观设定
# 【注释】数据来源: features.csv, labels.csv (用户提供)
Publication-quality matplotlib figure:
# User: "生成一个双Y轴图,左边是温度,右边是应变"
import matplotlib.pyplot as plt
import numpy as np
# 【用户需提供】实际数据
distance = np.linspace(0, 50, 100) # km
temperature = 25 + 5*np.sin(2*np.pi*distance/10) # °C - 示例数据
strain = 100 + 50*np.cos(2*np.pi*distance/15) # με - 示例数据
# Create figure with publication settings
plt.rcParams.update({
'font.size': 11,
'font.family': 'Arial',
'axes.linewidth': 1.2,
'xtick.major.width': 1.2,
'ytick.major.width': 1.2,
'lines.linewidth': 1.5
})
fig, ax1 = plt.subplots(figsize=(7, 4))
# Left y-axis: Temperature
color_temp = 'tab:red'
ax1.set_xlabel('Distance (km)', fontsize=12)
ax1.set_ylabel('Temperature (°C)', color=color_temp, fontsize=12)
line1 = ax1.plot(distance, temperature, color=color_temp, label='Temperature')
ax1.tick_params(axis='y', labelcolor=color_temp)
ax1.grid(True, alpha=0.3)
# Right y-axis: Strain
ax2 = ax1.twinx()
color_strain = 'tab:blue'
ax2.set_ylabel('Strain (με)', color=color_strain, fontsize=12)
line2 = ax2.plot(distance, strain, color=color_strain, linestyle='--', label='Strain')
ax2.tick_params(axis='y', labelcolor=color_strain)
# Combined legend
lines = line1 + line2
labels = [l.get_label() for l in lines]
ax1.legend(lines, labels, loc='upper right', frameon=True, fontsize=10)
plt.title('Temperature and Strain Distribution along Fiber', fontsize=13, pad=10)
plt.tight_layout()
plt.savefig('dual_axis_plot.pdf', dpi=300, bbox_inches='tight')
plt.savefig('dual_axis_plot.png', dpi=300, bbox_inches='tight')
# 【注释】图表符合期刊要求: 矢量PDF + 高分辨率PNG备份
DOI to BibTeX:
# User: "把这个DOI转成BibTeX: 10.1109/JLT.2023.1234567"
import requests
doi = "10.1109/JLT.2023.1234567"
url = f"https://doi.org/{doi}"
headers = {"Accept": "application/x-bibtex"}
response = requests.get(url, headers=headers)
if response.status_code == 200:
bibtex = response.text
print(bibtex)
# Save to file
with open('reference.bib', 'w', encoding='utf-8') as f:
f.write(bibtex)
else:
print(f"错误: 无法获取DOI {doi} 的元数据 (状态码: {response.status_code})")
# 【注释】不编造BibTeX,仅从DOI.org获取真实元数据
The skill is optimized for:
Over 20 sub-modules under references/scientific-skills/:
matlab_octave/
├── signal_processing.md # FFT, filtering, convolution
├── figure_export.md # Export settings for journals
└── numerical_methods.md # ODE solvers, optimization
python_libraries/
├── matplotlib_templates.md # Plot styles for Nature/IEEE
├── sklearn_workflows.md # ML pipelines, hyperparameter tuning
├── statsmodels_guide.md # Regression, ANOVA, time series
└── scipy_optimization.md # Curve fitting, global optimization
literature_tools/
├── arxiv_search.md # API usage, metadata extraction
├── crossref_api.md # DOI resolution, citation data
└── bibtex_management.md # Parsing, validation, deduplication
# Step 1: Data analysis (scientific-toolkit-skill)
# User: "分析BOTDR数据并生成温度分布图"
# → Generates: temperature_profile.png, analysis_results.csv
# Step 2: Write paper (research-writing-skill)
# User: "用这个图写实验结果章节"
# → Drafts: results_section.md (Chinese, with figure reference)
# Step 3: Create presentation (office-academic-skill)
# User: "把结果章节做成答辩PPT"
# → Generates: defense_slides.pptx (includes temperature_profile.png)
# Step 1: Extract literature (office-academic-skill)
# User: "把这5篇PDF转成综述Word文档"
# → Generates: literature_review.docx
# Step 2: Create group meeting slides (office-academic-skill)
# User: "用综述做组会PPT"
# → Generates: group_meeting.pptx (with citations)
# Step 3: Prepare speaker notes (research-writing-skill)
# User: "给每页PPT写讲稿"
# → Adds speaker notes in Chinese to group_meeting.pptx
# For literature search APIs (optional)
export SEMANTIC_SCHOLAR_API_KEY=your_key_here
export PUBMED_API_KEY=your_key_here
# For figure export paths
export PAPER_FIGURES_DIR=./figures
# For Office document templates
export PPT_TEMPLATE_PATH=./templates/school_template.pptx
export WORD_TEMPLATE_PATH=./templates/report_template.docx
Each skill includes a SKILL.md with customizable parameters:
# research-writing-skill/SKILL.md
defaults:
language: zh-CN
preserve_english: true
evidence_labels: true
allow_fabrication: false
# office-academic-skill/SKILL.md
ppt_standards:
action_titles: true
one_idea_per_slide: true
max_text_length: 50 # words per text box
require_sources: true
# scientific-toolkit-skill/SKILL.md
plotting:
default_dpi: 300
default_format: [pdf, png]
font_family: Arial
color_scheme: scientific
All three skills mark information origins:
# In Word reports:
"【来源: 论文图3】空间分辨率为0.5m"
# In Python code comments:
# 【来源: 用户确认】采样率 fs = 1e9 Hz
# In paper text:
"温度系数取 1.0 MHz/°C(文献默认值,参考[3])"
# ❌ Wrong:
"根据Smith et al. (2020, doi:10.xxxx/made_up) 的研究..."
# ✅ Correct:
"【需要补充引用】根据文献,BOTDR温度系数通常为1.0 MHz/°C"
"【建议用户确认】该结论需要文献支持,请提供DOI或论文PDF"
# In paper:
"本文提出了基于 wavelet denoising 的 Brillouin gain spectrum (BGS) 重构方法。"
# 中文句子 + English method names
# In code:
# 使用 Savitzky-Golay filter 平滑信号
signal_smooth = savgol_filter(signal, window_length=11, polyorder=3)
# In PPT:
slide.title.text = "基于小波去噪的BGS重构算法" # Chinese title
# Figure caption: "Wavelet denoising results (db4, level 3)" # English caption
# Check skill directories exist
ls ~/.claude/skills/research-writing-skill
ls ~/.codex/skills/office-academic-skill
# Verify SKILL.md is present
cat ~/.claude/skills/scientific-toolkit-skill/SKILL.md
# Reload skills (platform-specific)
/reload skills # In Claude Code
codex --reload-skills # In Codex CLI
# Check Octave compatibility (if MATLAB not available)
octave --version
# Install signal processing package (Octave)
octave --eval "pkg install -forge signal"
octave --eval "pkg load signal"
# Run MATLAB script with Octave
octave --eval "run('botdr_analysis.m')"
# Install scientific stack
pip install numpy scipy pandas matplotlib seaborn scikit-learn statsmodels
# For quantum optics
pip install qutip
# For materials science
pip install pymatgen
# For time series forecasting
pip install timesfm
# Verify imports
python -c "import matplotlib; import sklearn; import statsmodels; print('OK')"
# Use built-in overflow checker
cd ~/.claude/skills/office-academic-skill/references/thesis-defense-pptx/scripts
python check_text_overflow.py /path/to/presentation.pptx
# Output shows slides with overflowing text boxes
# Slide 5, Shape "TextBox 3": Text exceeds box by 12 lines
# Fix: Reduce text or enlarge box
from pptx import Presentation
prs = Presentation('presentation.pptx')
slide = prs.slides[4]
shape = slide.shapes[2] # TextBox 3
shape.height = Inches(3) # Increase height
prs.save('presentation_fixed.pptx')
# Fallback to manual BibTeX
# If DOI API is down, use CrossRef REST API
import requests
doi = "10.1109/JLT.2023.1234567"
url = f"https://api.crossref.org/works/{doi}"
response = requests.get(url)
if response.status_code == 200:
data = response.json()['message']
# Extract metadata manually
author = data['author'][0]['family']
title = data['title'][0]
print(f"Author: {author}, Title: {title}")
else:
print("【建议】请手动从期刊网站复制BibTeX条目")
# For MATLAB: Increase export resolution
print('figure.png', '-dpng', '-r600'); % 600 DPI for print
# For Python: Use vector formats
plt.savefig('figure.pdf', format='pdf', bbox_inches='tight') # Vector
plt.savefig('figure.eps', format='eps', bbox_inches='tight') # For LaTeX
# Check font embedding (for journals)
import matplotlib
Convert attached object images into code-only, animation-ready procedural Three.js models through guided sculpting workflow
Create and manage AI video storyboard projects with automated asset generation through Codex Storyboard workspace
Continue-thinking middleware that detects and handles reasoning truncation in Codex/OpenAI Responses-compatible APIs
Desktop manager for OpenAI Codex CLI with prompt injection, provider switching, and TOML/Auth visualization
Inject unrestricted developer mode instructions into Codex CLI (GPT-5.5) to bypass content filters
Install and use TradingCodex to build Codex-native investment research workflows with fixed-role agents, order approval gates, and local Django service plane