syllabus
Generates a curated supplementary reading list from any course syllabus using Consensus academic search. Grill-me intake (syllabus input format + course audience + year range) plus a grouping forcing-options checkpoint before any search runs — so the reading list matches the course's level and recency need. Parses the syllabus to extract topics and learning outcomes, searches Consensus for recent peer-reviewed papers per topic, and produces a professionally formatted .docx with clickable Consensus links, plain-language summaries calibrated to audience level, and Bloom-higher-order discussion questions tied to course learning goals. Triggers whenever a user uploads a syllabus, course outline, or curriculum document and wants supplementary readings. Also triggers on: 'syllabus reading list', 'find papers for my course', 'create a reading list from this syllabus', 'recent research for my class', 'supplementary readings', 'find journal articles for these topics', 'what recent papers cover this material', 'any new research on these course topics', 'update my syllabus with recent papers'. Even casual mentions when a syllabus is attached should trigger this skill.
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o syllabus.zip https://jpskill.com/download/21990.zip && unzip -o syllabus.zip && rm syllabus.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/21990.zip -OutFile "$d\syllabus.zip"; Expand-Archive "$d\syllabus.zip" -DestinationPath $d -Force; ri "$d\syllabus.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
syllabus.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
syllabusフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 8
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
シラバス — 補足読書リスト
ポータビリティ: Consensus MCP接続、
docxパッケージをインストールしたNode.js、およびシラバスのファイル読み取り機能が必要です。Claude Code CLIではネイティブに動作します。Claude.aiでは、Consensus MCP + コード実行 + ファイルアップロードにより、ワークフローがサポートされます。
コースシラバスを持つインストラクターまたは学生向けに、各コースセクションごとの最新の査読済み論文を含む、プロフェッショナルな補足読書リストを.docx形式で作成します。
アーキテクチャパターン: バンドルスクリプト
このスキルは、300行を超えるレイアウトコードをインライン化するのではなく、DOCX生成のためにバンドルされたJavaScriptヘルパースクリプトを使用しています。
- DOCX生成ロジックは再利用可能で複雑です。
- 関心の分離が向上します。スキルはオーケストレーションとインテリジェンスを担当し、スクリプトは機械的なドキュメントアセンブリを担当します。
- トークン効率が良いです。スキルは実行ごとにレイアウトを再導出することはありません。
- メンテナンスとバージョン管理が容易です。
バンドルされたスクリプトはscripts/generate_reading_list.jsにあります。スキルはパイプラインをオーケストレーションし、JSON入力を伴ってスクリプトを呼び出します。
エージェント整合性ルール (Research-Packの慣例)
PR #657の監査により、逐語的にロックされています。
- Consensusが返すもののみを使用してください。 すべての論文タイトル、著者、ジャーナル、年、URLは、このセッションのツール呼び出しから取得する必要があります。
[Not from Consensus — model knowledge]とラベル付けされたトレーニング知識の論文は除外されます。 - 次に進む前に確認してください。 検索は、応答が受信され、検査されるまで完了していません。
- 3つのカウントを追跡してください。 送信されたクエリ数 / 受信された論文数 / 引用された論文数。監査サマリーに表示します。
- ギャップを表面化し、埋めないでください。 1つの論文と限定的な結果に関するメモがあるセクションは、捏造で埋められたセクションよりも優れています。
フェーズ0: グリルミーインテーク (3つの強制質問)
Q1 (ルート) — シラバス入力
シラバスを提供してください — 1つ選択してください:
- ファイルパス (PDF、DOCX、テキスト) — 私が読み取ります
- 貼り付けたコンテンツ — 以下に貼り付けてください
- 印刷されたシラバスの画像 — 画像を添付してください
質問の理由: 各形式には異なるリーダー (PDF / DOCXパーサー / ビジョン) が必要です。事前に選択することで、無駄な試みを防ぎます。
選択を強制します。シラバスなしでは開始を拒否します。
Q2 (Q1に依存) — コースの対象者
コースの対象者 — 1つ選択してください:
- 学部生 (入門レベル)
- 学部生 (上級 / 高学年)
- 大学院生 (修士 / 博士課程初期)
- 大学院生 (博士課程 / 上級)
- 専門家 / 継続教育
- 混合
質問の理由: 対象者によって、要約の専門用語レベルと議論の質問の複雑さが決まります。学部生の要約はすべての用語を定義し、大学院生の要約は専門的な流暢さを前提とします。学部生向けの議論の質問は分析をテストし、大学院生向けは批判と拡張をテストします。
規範については、references/audience_calibration.mdを参照してください。
Q3 (Q1に依存) — 年齢範囲
論文の年範囲 — 1つ選択してください:
- 過去1年 (最新のみ)
- 過去2年 (デフォルト — 最新 + 1年間のコンテキスト)
- 過去5年 (より広範、基礎的な最近の成果を含む)
質問の理由: 読書リストはすぐに古くなります。1年フィルターは鮮度を保ち、5年フィルターはすでに標準となっている基礎的な最近の成果を表面化します。すべてのConsensus検索の
year_minパラメーターを駆動します。
デフォルト (過去2年) で選択を強制します。
停止条件: フェーズ1の前に最大3つの質問。フェーズ2後のグループ化と確認のチェックポイントは、それ自体がグリルミーの瞬間です。
フェーズ1: シラバスの解析
Q1の入力形式に応じて:
- PDF: PDFリーダーを使用し、テキストを抽出します。
- DOCX: pandocまたはDOCXパーサーを使用し、テキストを抽出します。
- テキスト/貼り付け: 直接読み取ります。
- 画像: ビジョンを使用し、テキストを抽出します。
抽出されたテキストから:
- コースタイトル + 講師 + 学期
- トピックリスト (講義タイトル、週ごとの内訳など)
- 学習成果 (明示されている場合。不足している場合は、説明から3〜5つ推論します)
推論された学習成果はDOCXで[inferred]とマークします。
フェーズ2: トピックのグループ化 + ユーザーとの確認
topic_grouper.pyによるグループ化
scripts/topic_grouper.pyを使用して、関連するトピックを6〜12のセクションにクラスター化します。ヒューリスティック: 密接に関連するトピックはマージされ、横断的なトピックは独自のセクションになります。
グループ化と確認のチェックポイント (強制オプション)
グループ化後、以下を提示します。
提案されたセクション: [項目数を含むリスト]。1つ選択してください:
- 「これで良いです — これらのセクションで進めてください」
- 「セクション [X] と [Y] をマージしてください」
- 「セクション [X] を2つに分割してください」
- 「[トピック] のセクションを追加してください」
- 「セクション [X] を削除してください」
質問の理由: グループ化は検索割り当てを決定します。誤ったグループ化は、検索予算を悪いクラスターに無駄に消費します。これは、検索がConsensus呼び出しを消費する前の最後の安価な修正の機会です。
明示的なユーザーの選択なしにフェーズ3を開始することを拒否します。
フェーズ3: セクションごとのConsensus検索
シーケンシャル、1クエリ/秒。1セクションあたり1〜2クエリ。
応用ドメインの織り込み (重要)
単にトピックを検索するだけでなく、トピック + 応用ドメインを検索します。
| ❌ 一般的 | ✅ 応用ドメイン |
|---|---|
| "酵素反応速度論" | "酵素反応速度論 食品加工応用" |
| "機械学習" | "機械学習 臨床意思決定支援" |
| "熱力学" | "熱力学 再生可能エネルギーシステム" |
| "ソーシャルネットワーク分析" | "ソーシャルネットワーク分析 公衆衛生介入" |
論文の関連性を劇的に向上させます。規範については、references/applied_domain_weaving.mdを参照してください。
セクションごとのパターン
各セクションについて:
1. クエリを構築します: "{トピックキーワード} {応用ドメインの視点}" + Q3からのyear_min
2. Consensusに送信します (citation_trackerによって強制される1クエリ/秒の間隔でシーケンシャルに)
3. 結果を受信します
4. (結果が少ない場合) 応用ドメインの視点なしでフォールバッククエリを1つ送信します
5. 各セクションから1〜3本の論文を選択します (全セクションで合計15〜25本)
選択の優先順位
- 関連性 — 論文がセクションのトピックに直接対応していること
- レビュー / メタアナリシス — 分野を統合していること
- 引用数 — 定評のある研究であること
- 応用ドメインとの関連性 — コースのドメイン (例: 工学 vs 理論) に関連していること
フェーズ4:
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Syllabus — Course Supplementary Reading List
Portability: Requires a Consensus MCP connection, Node.js with
docxpackage, and file reading capability for the syllabus. Works in Claude Code CLI natively. In Claude.ai with Consensus MCP + Code Execution + file upload, the workflow is supported.
For an instructor or student with a course syllabus, produce a professional supplementary reading list as .docx containing recent peer-reviewed papers per course section.
Architectural Pattern: Bundled Script
This skill uses a bundled JavaScript helper script for DOCX generation rather than inlining the 300+ lines of layout code:
- DOCX generation logic is reusable + complex
- Better separation of concerns: skill = orchestration + intelligence; script = mechanical document assembly
- Token-efficient: skill doesn't re-derive layout each run
- Easier to maintain and version
The bundled script is at scripts/generate_reading_list.js. The skill orchestrates the pipeline + invokes the script with JSON input.
Agent Integrity Rules (Research-Pack Convention)
Locked verbatim per PR #657 audit.
- Only use what Consensus returns. Every paper title, author, journal, year, URL must come from this session's tool calls. Training-knowledge papers labeled
[Not from Consensus — model knowledge]and excluded. - Confirm before moving on. A search isn't complete until response received and inspected.
- Track three counts. Queries sent / papers received / papers cited. Surface in audit summary.
- Surface gaps, don't fill them. Section with one paper + note about limited results > section padded with fabrications.
Phase 0: Grill-Me Intake (3 forcing questions)
Q1 (root) — Syllabus input
Provide the syllabus — pick one:
- File path (PDF, DOCX, text) — I'll read it
- Pasted content — paste below
- Image of a printed syllabus — attach the image
Why I'm asking: Each format needs a different reader (PDF / DOCX parser / vision). Picking upfront prevents wasted attempts.
Forcing choice. Refuse to start without a syllabus.
Q2 (depends on Q1) — Course audience
Course audience — pick one:
- Undergraduate (intro level)
- Undergraduate (advanced / upper division)
- Graduate (Masters / early PhD)
- Graduate (doctoral / advanced)
- Professional / continuing education
- Mixed
Why I'm asking: Audience dictates summary jargon level and discussion-question complexity. Undergrad summaries define every term; grad summaries assume technical fluency. Discussion questions for undergrads test analysis; for grads test critique and extension.
See references/audience_calibration.md for the canon.
Q3 (depends on Q1) — Year range
Year range for papers — pick one:
- Last 1 year (most recent only)
- Last 2 years (default — recent + a year of context)
- Last 5 years (broader, includes foundational recent work)
Why I'm asking: Reading lists go stale fast. 1-year filters keep things fresh; 5-year filters surface foundational recent work that's already standard. Drives the year_min parameter on every Consensus search.
Forcing choice with default (last 2 years).
Stop condition: 3 questions max before Phase 1. The post-Phase-2 group-and-confirm checkpoint is its own grill-me moment.
Phase 1: Parse the Syllabus
Per Q1 input format:
- PDF: use PDF reader; extract text
- DOCX: use pandoc or DOCX parser; extract text
- Text/pasted: read directly
- Image: use vision; extract text
From extracted text:
- Course title + instructor + term
- Topic list (lecture titles, week-by-week breakdown, etc.)
- Learning outcomes (if explicit; if missing, infer 3-5 from description)
Mark inferred learning outcomes as [inferred] in the DOCX.
Phase 2: Group Topics + Confirm with User
Group via topic_grouper.py
Use scripts/topic_grouper.py to cluster related topics into 6-12 sections. Heuristic: closely-related topics merge; cross-cutting topics get their own section.
Group-and-Confirm Checkpoint (Forcing Options)
After grouping, present:
Proposed sections: [list with item counts]. Pick one:
- "Looks good — proceed with these sections"
- "Merge sections [X] and [Y]"
- "Split section [X] into two"
- "Add a section for [topic]"
- "Remove section [X]"
Why I'm asking: Grouping drives search allocation. Wrong grouping wastes the search budget on bad clusters. This is the last cheap moment to correct course before searches consume Consensus calls.
Refuse to start Phase 3 without explicit user choice.
Phase 3: Search Consensus per Section
Sequential, 1 q/sec. 1-2 queries per section.
Applied-Domain Weaving (Critical)
Don't just search the topic — search the topic + applied domain:
| ❌ Generic | ✅ Applied-domain |
|---|---|
| "enzyme kinetics" | "enzyme kinetics food processing applications" |
| "machine learning" | "machine learning clinical decision support" |
| "thermodynamics" | "thermodynamics renewable energy systems" |
| "social network analysis" | "social network analysis public health interventions" |
Boosts paper relevance dramatically. See references/applied_domain_weaving.md for the canon.
Per-Section Pattern
For each section:
1. Construct query: "{topic-keywords} {applied-domain-angle}" + year_min from Q3
2. Submit to Consensus (sequential, 1 q/sec gap enforced by citation_tracker)
3. Receive results
4. (If thin) submit one fallback query without applied-domain angle
5. Select 1-3 papers per section (15-25 total across all sections)
Selection Priorities
- Relevance — paper directly addresses the section topic
- Reviews / meta-analyses — synthesize the field
- Citation count — established work
- Applied-domain connection — tied to the course's domain (e.g., engineering vs theory)
Phase 4: Write Summaries + Discussion Questions
Summary writing
Per paper:
- Plain language (calibrated to audience from Q2)
- 2-3 sentences
- Define jargon if undergraduate audience; assume fluency if graduate
Quality bars
| ✅ Good summary | ❌ Bad summary |
|---|---|
| "This review maps how different diets — Mediterranean, Nordic, vegetarian — reshape the types of fat molecules circulating in your blood, with implications for heart disease risk." | "This paper reviews lipidomic profiles across dietary interventions and their cardiometabolic implications." |
Discussion question writing
Per paper:
- Bloom higher-order (apply / analyze / evaluate)
- Tied to a specific course learning outcome
- Promotes discussion, not just recall
| ✅ Good question | ❌ Bad question |
|---|---|
| "If dietary fat quality can reshape your lipoprotein lipidome, what does this suggest about the biochemical basis for dietary guidelines recommending unsaturated over saturated fats?" | "What did the authors find?" (Just recall) |
Use scripts/discussion_question_validator.py to flag recall-only questions.
Phase 5: Generate .docx via Bundled Script
node ../scripts/generate_reading_list.js \
--input /tmp/syllabus_data.json \
--output /path/to/reading_list_<course>_<date>.docx
The script accepts JSON with this schema:
{
"courseTitle": "string",
"courseSubtitle": "string",
"generatedDate": "string",
"yearRange": "string",
"introText": "string",
"learningOutcomes": ["string", ...],
"sections": [
{
"heading": "string",
"papers": [
{
"title": "string",
"authors": "string",
"journal": "string",
"year": number,
"url": "string",
"summary": "string",
"question": "string"
}
]
}
],
"auditLog": {
"totalQueriesSent": number,
"totalPapersReceived": number,
"totalPapersCited": number,
"toolConstraints": "string",
"searchDetails": [
{
"section": "string",
"query": "string",
"papersReturned": number,
"papersSelected": number,
"status": "string"
}
],
"failures": []
}
}
The script handles:
docxpackage require with multi-location fallback- Title page, intro with Consensus link, learning outcomes box, numbered papers per section
ExternalHyperlinkwith full Consensus URLs (never truncated)LevelFormat.BULLETfor lists (not unicode bullets)- Footer with generation metadata
- Input validation (missing fields → graceful error)
See references/bundled_script_pattern.md for why bundled vs inline.
Phase 6: Deliver
- File path
- Audit summary in chat: "Saved {file}. {N} sections × {M} papers / {K} cited. Plan tier: {tier}."
- Validate:
python scripts/office/validate.py <docx>
Tooling
| Script | Role |
|---|---|
scripts/citation_tracker.py |
Consensus three-count audit + 1s sequential discipline at ~/.syllabus_sessions/<session>.json |
scripts/topic_grouper.py |
Heuristic 6-12 section grouping from extracted topics |
scripts/discussion_question_validator.py |
Bloom higher-order quality check; flags recall-only questions |
scripts/generate_reading_list.js |
Bundled Node.js DOCX generator — JSON input → .docx output |
References
references/applied_domain_weaving.md— search-quality canon (7+ sources)references/audience_calibration.md— undergrad vs grad summary jargon (7+ sources)references/bundled_script_pattern.md— why bundle vs inline (7+ sources)
Error Handling
| Failure | Behavior |
|---|---|
| Consensus rate-limit hit | Wait 3s, retry once, log |
| Search returns 0 for a section | Note section as "limited results — consider manual supplementation" |
| 3 consecutive failures | Stop, alert user, share collected so far |
docx package not installed |
Script attempts npm install; if still failing, fail with clear message |
| DOCX validation fails | Unpack XML, log issue, ask user to retry |
| Syllabus format unsupported | List supported formats, ask user to convert |
| Learning outcomes can't be extracted | Infer 3-5 from course description; mark as inferred in document |
Anti-Patterns To Reject
- Parallelizing Consensus calls (rate limit)
- Searching topics without applied-domain angle (poor relevance)
- Padding sections with fabricated entries when Consensus returns thin
- Generic discussion questions ("What did the authors find?")
- Jargon-heavy summaries unsuitable for the course's audience level
- Skipping the group-and-confirm step (wastes searches)
- Truncating Consensus URLs in hyperlinks
- Inlining 300 lines of docx-generation JavaScript in the skill body (use bundled script)
Version: 1.0.0
Source spec: megaprompts/10-syllabus-megaprompt.md
Build pattern: Path B (direct conversion). Bundled-JS-DOCX-generator variant.
同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (12,673 bytes)
- 📎 references/applied_domain_weaving.md (8,232 bytes)
- 📎 references/audience_calibration.md (10,240 bytes)
- 📎 references/bundled_script_pattern.md (7,280 bytes)
- 📎 scripts/citation_tracker.py (8,343 bytes)
- 📎 scripts/discussion_question_validator.py (8,866 bytes)
- 📎 scripts/generate_reading_list.js (13,810 bytes)
- 📎 scripts/topic_grouper.py (7,125 bytes)