[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C27N3H0F9RGG2KASPASH04":3,"skill-same:01M6C27N3H0F9RGG2KASPASH04":112},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":30,"publishedAt":50,"linkOnly":51,"markdownContent":52,"markdownBody":53,"frontMatter":54,"refName":60,"commitSha":61,"skillDirectory":62,"forksCount":13,"repositoryHtmlUrl":63,"repositoryHomepageUrl":6,"ownerHtmlUrl":64,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":65,"install":66,"resources":79},"01M6C27N3H0F9RGG2KASPASH04","syllabus",null,"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. Use when the user uploads a syllabus, course outline, or curriculum document and wants supplementary readings (e.g., 'create a reading list from this syllabus', 'find recent papers for my course') — even casual mentions with a syllabus attached should trigger this skill.","mne20114-hash\u002Fgest35bi","mne20114-hash","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F224168109?v=4","01M6C0JCR7334CZ39YWTZXX2NG","01M6C0JCWN0NBWMQTW1CPG2Z4G",0,"MIT","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002FSKILL.md",[17,22,25],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":26,"categoryName":27,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[5,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"format","outcomes","use","extract","list","consensus","find","Rules","direct","docx","js","learning","checkpoint","integrity","audit","search","intake","create","pr","2026-11-10 10:12:30",false,"---\nname: syllabus\ndescription: \"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. Use when the user uploads a syllabus, course outline, or curriculum document and wants supplementary readings (e.g., 'create a reading list from this syllabus', 'find recent papers for my course') — even casual mentions with a syllabus attached should trigger this skill.\"\nlicense: MIT\nmetadata:\n  source_spec: \"megaprompts\u002F10-syllabus-megaprompt.md\"\n  build_pattern: \"Path B (direct conversion)\"\n  research_pack_convention: \"Agent Integrity Rules verbatim per PR #657 audit; bundled-JS-DOCX-generator variant\"\n  version: 1.0.0\n---\n\n# Syllabus — Course Supplementary Reading List\n\n> **Portability:** Requires a Consensus MCP connection, Node.js with `docx` package, 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.\n\nFor an instructor or student with a course syllabus, produce a professional supplementary reading list as `.docx` containing recent peer-reviewed papers per course section.\n\n## Architectural Pattern: Bundled Script\n\nThis skill uses a **bundled JavaScript helper script** for DOCX generation rather than inlining the 300+ lines of layout code:\n\n- DOCX generation logic is reusable + complex\n- Better separation of concerns: skill = orchestration + intelligence; script = mechanical document assembly\n- Token-efficient: skill doesn't re-derive layout each run\n- Easier to maintain and version\n\nThe bundled script is at `scripts\u002Fgenerate_reading_list.js`. The skill orchestrates the pipeline + invokes the script with JSON input.\n\n## Agent Integrity Rules (Research-Pack Convention)\n\nLocked verbatim per PR #657 audit.\n\n- **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.\n- **Confirm before moving on.** A search isn't complete until response received and inspected.\n- **Track three counts.** Queries sent \u002F papers received \u002F papers cited. Surface in audit summary.\n- **Surface gaps, don't fill them.** Section with one paper + note about limited results > section padded with fabrications.\n\n## Phase 0: Grill-Me Intake (3 forcing questions)\n\n### Q1 (root) — Syllabus input\n\n> **Provide the syllabus — pick one:**\n>\n> 1. File path (PDF, DOCX, text) — I'll read it\n> 2. Pasted content — paste below\n> 3. Image of a printed syllabus — attach the image\n>\n> *Why I'm asking:* Each format needs a different reader (PDF \u002F DOCX parser \u002F vision). Picking upfront prevents wasted attempts.\n\nForcing choice. Refuse to start without a syllabus.\n\n### Q2 (depends on Q1) — Course audience\n\n> **Course audience — pick one:**\n>\n> 1. Undergraduate (intro level)\n> 2. Undergraduate (advanced \u002F upper division)\n> 3. Graduate (Masters \u002F early PhD)\n> 4. Graduate (doctoral \u002F advanced)\n> 5. Professional \u002F continuing education\n> 6. Mixed\n>\n> *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.\n\nSee [`references\u002Faudience_calibration.md`](references\u002Faudience_calibration.md) for the canon.\n\n### Q3 (depends on Q1) — Year range\n\n> **Year range for papers — pick one:**\n>\n> 1. Last 1 year (most recent only)\n> 2. Last 2 years (default — recent + a year of context)\n> 3. Last 5 years (broader, includes foundational recent work)\n>\n> *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.\n\nForcing choice with default (last 2 years).\n\n**Stop condition:** 3 questions max before Phase 1. The post-Phase-2 group-and-confirm checkpoint is its own grill-me moment.\n\n## Phase 1: Parse the Syllabus\n\nPer Q1 input format:\n\n- **PDF**: use PDF reader; extract text\n- **DOCX**: use pandoc or DOCX parser; extract text\n- **Text\u002Fpasted**: read directly\n- **Image**: use vision; extract text\n\nFrom extracted text:\n1. Course title + instructor + term\n2. Topic list (lecture titles, week-by-week breakdown, etc.)\n3. Learning outcomes (if explicit; if missing, infer 3-5 from description)\n\nMark inferred learning outcomes as `[inferred]` in the DOCX.\n\n## Phase 2: Group Topics + Confirm with User\n\n### Group via topic_grouper.py\n\nUse `scripts\u002Ftopic_grouper.py` to cluster related topics into 6-12 sections. Heuristic: closely-related topics merge; cross-cutting topics get their own section.\n\n### Group-and-Confirm Checkpoint (Forcing Options)\n\nAfter grouping, present:\n\n> **Proposed sections: [list with item counts]. Pick one:**\n>\n> 1. \"Looks good — proceed with these sections\"\n> 2. \"Merge sections [X] and [Y]\"\n> 3. \"Split section [X] into two\"\n> 4. \"Add a section for [topic]\"\n> 5. \"Remove section [X]\"\n>\n> *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.\n\n**Refuse to start Phase 3 without explicit user choice.**\n\n## Phase 3: Search Consensus per Section\n\nSequential, 1 q\u002Fsec. 1-2 queries per section.\n\n### Applied-Domain Weaving (Critical)\n\nDon't just search the topic — **search the topic + applied domain**:\n\n| ❌ Generic | ✅ Applied-domain |\n|---|---|\n| \"enzyme kinetics\" | \"enzyme kinetics food processing applications\" |\n| \"machine learning\" | \"machine learning clinical decision support\" |\n| \"thermodynamics\" | \"thermodynamics renewable energy systems\" |\n| \"social network analysis\" | \"social network analysis public health interventions\" |\n\nBoosts paper relevance dramatically. See [`references\u002Fapplied_domain_weaving.md`](references\u002Fapplied_domain_weaving.md) for the canon.\n\n### Per-Section Pattern\n\n```\nFor each section:\n  1. Construct query: \"{topic-keywords} {applied-domain-angle}\" + year_min from Q3\n  2. Submit to Consensus (sequential, 1 q\u002Fsec gap enforced by citation_tracker)\n  3. Receive results\n  4. (If thin) submit one fallback query without applied-domain angle\n  5. Select 1-3 papers per section (15-25 total across all sections)\n```\n\n### Selection Priorities\n\n1. **Relevance** — paper directly addresses the section topic\n2. **Reviews \u002F meta-analyses** — synthesize the field\n3. **Citation count** — established work\n4. **Applied-domain connection** — tied to the course's domain (e.g., engineering vs theory)\n\n## Phase 4: Write Summaries + Discussion Questions\n\n### Summary writing\n\nPer paper:\n- Plain language (calibrated to audience from Q2)\n- 2-3 sentences\n- Define jargon if undergraduate audience; assume fluency if graduate\n\n### Quality bars\n\n| ✅ Good summary | ❌ Bad summary |\n|---|---|\n| \"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.\" |\n\n### Discussion question writing\n\nPer paper:\n- Bloom **higher-order** (apply \u002F analyze \u002F evaluate)\n- Tied to a specific course learning outcome\n- Promotes discussion, not just recall\n\n| ✅ Good question | ❌ Bad question |\n|---|---|\n| \"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) |\n\nUse `scripts\u002Fdiscussion_question_validator.py` to flag recall-only questions.\n\n## Phase 5: Generate .docx via Bundled Script\n\n```bash\nnode scripts\u002Fgenerate_reading_list.js \\\n  --input \u002Ftmp\u002Fsyllabus_data.json \\\n  --output \u002Fpath\u002Fto\u002Freading_list_\u003Ccourse>_\u003Cdate>.docx\n```\n\nThe script accepts JSON with this schema:\n\n```json\n{\n  \"courseTitle\": \"string\",\n  \"courseSubtitle\": \"string\",\n  \"generatedDate\": \"string\",\n  \"yearRange\": \"string\",\n  \"introText\": \"string\",\n  \"learningOutcomes\": [\"string\", ...],\n  \"sections\": [\n    {\n      \"heading\": \"string\",\n      \"papers\": [\n        {\n          \"title\": \"string\",\n          \"authors\": \"string\",\n          \"journal\": \"string\",\n          \"year\": number,\n          \"url\": \"string\",\n          \"summary\": \"string\",\n          \"question\": \"string\"\n        }\n      ]\n    }\n  ],\n  \"auditLog\": {\n    \"totalQueriesSent\": number,\n    \"totalPapersReceived\": number,\n    \"totalPapersCited\": number,\n    \"toolConstraints\": \"string\",\n    \"searchDetails\": [\n      {\n        \"section\": \"string\",\n        \"query\": \"string\",\n        \"papersReturned\": number,\n        \"papersSelected\": number,\n        \"status\": \"string\"\n      }\n    ],\n    \"failures\": []\n  }\n}\n```\n\nThe script handles:\n- `docx` package require with multi-location fallback\n- Title page, intro with Consensus link, learning outcomes box, numbered papers per section\n- `ExternalHyperlink` with full Consensus URLs (never truncated)\n- `LevelFormat.BULLET` for lists (not unicode bullets)\n- Footer with generation metadata\n- Input validation (missing fields → graceful error)\n\nSee [`references\u002Fbundled_script_pattern.md`](references\u002Fbundled_script_pattern.md) for why bundled vs inline.\n\n## Phase 6: Deliver\n\n- File path\n- Audit summary in chat: \"Saved {file}. {N} sections × {M} papers \u002F {K} cited. Plan tier: {tier}.\"\n- Validate: check zip integrity with `python3 -c \"import zipfile,sys; zipfile.ZipFile(sys.argv[1]).testzip()\" \u003Cdocx>` (no output = intact), then confirm the required sections are present\n\n## Tooling\n\n| Script | Role |\n|---|---|\n| `scripts\u002Fcitation_tracker.py` | Consensus three-count audit + 1s sequential discipline at `~\u002F.syllabus_sessions\u002F\u003Csession>.json` |\n| `scripts\u002Ftopic_grouper.py` | Heuristic 6-12 section grouping from extracted topics |\n| `scripts\u002Fdiscussion_question_validator.py` | Bloom higher-order quality check; flags recall-only questions |\n| `scripts\u002Fgenerate_reading_list.js` | **Bundled Node.js DOCX generator** — JSON input → .docx output |\n\n## References\n\n- [`references\u002Fapplied_domain_weaving.md`](references\u002Fapplied_domain_weaving.md) — search-quality canon (7+ sources)\n- [`references\u002Faudience_calibration.md`](references\u002Faudience_calibration.md) — undergrad vs grad summary jargon (7+ sources)\n- [`references\u002Fbundled_script_pattern.md`](references\u002Fbundled_script_pattern.md) — why bundle vs inline (7+ sources)\n\n## Error Handling\n\n| Failure | Behavior |\n|---|---|\n| Consensus rate-limit hit | Wait 3s, retry once, log |\n| Search returns 0 for a section | Note section as \"limited results — consider manual supplementation\" |\n| 3 consecutive failures | Stop, alert user, share collected so far |\n| `docx` package not installed | Script attempts `npm install`; if still failing, fail with clear message |\n| DOCX validation fails | Unpack XML, log issue, ask user to retry |\n| Syllabus format unsupported | List supported formats, ask user to convert |\n| Learning outcomes can't be extracted | Infer 3-5 from course description; mark as inferred in document |\n\n## Anti-Patterns To Reject\n\n- Parallelizing Consensus calls (rate limit)\n- Searching topics without applied-domain angle (poor relevance)\n- Padding sections with fabricated entries when Consensus returns thin\n- Generic discussion questions (\"What did the authors find?\")\n- Jargon-heavy summaries unsuitable for the course's audience level\n- Skipping the group-and-confirm step (wastes searches)\n- Truncating Consensus URLs in hyperlinks\n- Inlining 300 lines of docx-generation JavaScript in the skill body (use bundled script)\n\n---\n\n**Version:** 1.0.0\n**Source spec:** `megaprompts\u002F10-syllabus-megaprompt.md` (maintainer-local draft spec — gitignored, not present in the public repository)\n**Build pattern:** Path B (direct conversion). Bundled-JS-DOCX-generator variant.\n","# Syllabus — Course Supplementary Reading List\n\n> **Portability:** Requires a Consensus MCP connection, Node.js with `docx` package, 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.\n\nFor an instructor or student with a course syllabus, produce a professional supplementary reading list as `.docx` containing recent peer-reviewed papers per course section.\n\n## Architectural Pattern: Bundled Script\n\nThis skill uses a **bundled JavaScript helper script** for DOCX generation rather than inlining the 300+ lines of layout code:\n\n- DOCX generation logic is reusable + complex\n- Better separation of concerns: skill = orchestration + intelligence; script = mechanical document assembly\n- Token-efficient: skill doesn't re-derive layout each run\n- Easier to maintain and version\n\nThe bundled script is at `scripts\u002Fgenerate_reading_list.js`. The skill orchestrates the pipeline + invokes the script with JSON input.\n\n## Agent Integrity Rules (Research-Pack Convention)\n\nLocked verbatim per PR #657 audit.\n\n- **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.\n- **Confirm before moving on.** A search isn't complete until response received and inspected.\n- **Track three counts.** Queries sent \u002F papers received \u002F papers cited. Surface in audit summary.\n- **Surface gaps, don't fill them.** Section with one paper + note about limited results > section padded with fabrications.\n\n## Phase 0: Grill-Me Intake (3 forcing questions)\n\n### Q1 (root) — Syllabus input\n\n> **Provide the syllabus — pick one:**\n>\n> 1. File path (PDF, DOCX, text) — I'll read it\n> 2. Pasted content — paste below\n> 3. Image of a printed syllabus — attach the image\n>\n> *Why I'm asking:* Each format needs a different reader (PDF \u002F DOCX parser \u002F vision). Picking upfront prevents wasted attempts.\n\nForcing choice. Refuse to start without a syllabus.\n\n### Q2 (depends on Q1) — Course audience\n\n> **Course audience — pick one:**\n>\n> 1. Undergraduate (intro level)\n> 2. Undergraduate (advanced \u002F upper division)\n> 3. Graduate (Masters \u002F early PhD)\n> 4. Graduate (doctoral \u002F advanced)\n> 5. Professional \u002F continuing education\n> 6. Mixed\n>\n> *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.\n\nSee [`references\u002Faudience_calibration.md`](references\u002Faudience_calibration.md) for the canon.\n\n### Q3 (depends on Q1) — Year range\n\n> **Year range for papers — pick one:**\n>\n> 1. Last 1 year (most recent only)\n> 2. Last 2 years (default — recent + a year of context)\n> 3. Last 5 years (broader, includes foundational recent work)\n>\n> *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.\n\nForcing choice with default (last 2 years).\n\n**Stop condition:** 3 questions max before Phase 1. The post-Phase-2 group-and-confirm checkpoint is its own grill-me moment.\n\n## Phase 1: Parse the Syllabus\n\nPer Q1 input format:\n\n- **PDF**: use PDF reader; extract text\n- **DOCX**: use pandoc or DOCX parser; extract text\n- **Text\u002Fpasted**: read directly\n- **Image**: use vision; extract text\n\nFrom extracted text:\n1. Course title + instructor + term\n2. Topic list (lecture titles, week-by-week breakdown, etc.)\n3. Learning outcomes (if explicit; if missing, infer 3-5 from description)\n\nMark inferred learning outcomes as `[inferred]` in the DOCX.\n\n## Phase 2: Group Topics + Confirm with User\n\n### Group via topic_grouper.py\n\nUse `scripts\u002Ftopic_grouper.py` to cluster related topics into 6-12 sections. Heuristic: closely-related topics merge; cross-cutting topics get their own section.\n\n### Group-and-Confirm Checkpoint (Forcing Options)\n\nAfter grouping, present:\n\n> **Proposed sections: [list with item counts]. Pick one:**\n>\n> 1. \"Looks good — proceed with these sections\"\n> 2. \"Merge sections [X] and [Y]\"\n> 3. \"Split section [X] into two\"\n> 4. \"Add a section for [topic]\"\n> 5. \"Remove section [X]\"\n>\n> *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.\n\n**Refuse to start Phase 3 without explicit user choice.**\n\n## Phase 3: Search Consensus per Section\n\nSequential, 1 q\u002Fsec. 1-2 queries per section.\n\n### Applied-Domain Weaving (Critical)\n\nDon't just search the topic — **search the topic + applied domain**:\n\n| ❌ Generic | ✅ Applied-domain |\n|---|---|\n| \"enzyme kinetics\" | \"enzyme kinetics food processing applications\" |\n| \"machine learning\" | \"machine learning clinical decision support\" |\n| \"thermodynamics\" | \"thermodynamics renewable energy systems\" |\n| \"social network analysis\" | \"social network analysis public health interventions\" |\n\nBoosts paper relevance dramatically. See [`references\u002Fapplied_domain_weaving.md`](references\u002Fapplied_domain_weaving.md) for the canon.\n\n### Per-Section Pattern\n\n```\nFor each section:\n  1. Construct query: \"{topic-keywords} {applied-domain-angle}\" + year_min from Q3\n  2. Submit to Consensus (sequential, 1 q\u002Fsec gap enforced by citation_tracker)\n  3. Receive results\n  4. (If thin) submit one fallback query without applied-domain angle\n  5. Select 1-3 papers per section (15-25 total across all sections)\n```\n\n### Selection Priorities\n\n1. **Relevance** — paper directly addresses the section topic\n2. **Reviews \u002F meta-analyses** — synthesize the field\n3. **Citation count** — established work\n4. **Applied-domain connection** — tied to the course's domain (e.g., engineering vs theory)\n\n## Phase 4: Write Summaries + Discussion Questions\n\n### Summary writing\n\nPer paper:\n- Plain language (calibrated to audience from Q2)\n- 2-3 sentences\n- Define jargon if undergraduate audience; assume fluency if graduate\n\n### Quality bars\n\n| ✅ Good summary | ❌ Bad summary |\n|---|---|\n| \"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.\" |\n\n### Discussion question writing\n\nPer paper:\n- Bloom **higher-order** (apply \u002F analyze \u002F evaluate)\n- Tied to a specific course learning outcome\n- Promotes discussion, not just recall\n\n| ✅ Good question | ❌ Bad question |\n|---|---|\n| \"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) |\n\nUse `scripts\u002Fdiscussion_question_validator.py` to flag recall-only questions.\n\n## Phase 5: Generate .docx via Bundled Script\n\n```bash\nnode scripts\u002Fgenerate_reading_list.js \\\n  --input \u002Ftmp\u002Fsyllabus_data.json \\\n  --output \u002Fpath\u002Fto\u002Freading_list_\u003Ccourse>_\u003Cdate>.docx\n```\n\nThe script accepts JSON with this schema:\n\n```json\n{\n  \"courseTitle\": \"string\",\n  \"courseSubtitle\": \"string\",\n  \"generatedDate\": \"string\",\n  \"yearRange\": \"string\",\n  \"introText\": \"string\",\n  \"learningOutcomes\": [\"string\", ...],\n  \"sections\": [\n    {\n      \"heading\": \"string\",\n      \"papers\": [\n        {\n          \"title\": \"string\",\n          \"authors\": \"string\",\n          \"journal\": \"string\",\n          \"year\": number,\n          \"url\": \"string\",\n          \"summary\": \"string\",\n          \"question\": \"string\"\n        }\n      ]\n    }\n  ],\n  \"auditLog\": {\n    \"totalQueriesSent\": number,\n    \"totalPapersReceived\": number,\n    \"totalPapersCited\": number,\n    \"toolConstraints\": \"string\",\n    \"searchDetails\": [\n      {\n        \"section\": \"string\",\n        \"query\": \"string\",\n        \"papersReturned\": number,\n        \"papersSelected\": number,\n        \"status\": \"string\"\n      }\n    ],\n    \"failures\": []\n  }\n}\n```\n\nThe script handles:\n- `docx` package require with multi-location fallback\n- Title page, intro with Consensus link, learning outcomes box, numbered papers per section\n- `ExternalHyperlink` with full Consensus URLs (never truncated)\n- `LevelFormat.BULLET` for lists (not unicode bullets)\n- Footer with generation metadata\n- Input validation (missing fields → graceful error)\n\nSee [`references\u002Fbundled_script_pattern.md`](references\u002Fbundled_script_pattern.md) for why bundled vs inline.\n\n## Phase 6: Deliver\n\n- File path\n- Audit summary in chat: \"Saved {file}. {N} sections × {M} papers \u002F {K} cited. Plan tier: {tier}.\"\n- Validate: check zip integrity with `python3 -c \"import zipfile,sys; zipfile.ZipFile(sys.argv[1]).testzip()\" \u003Cdocx>` (no output = intact), then confirm the required sections are present\n\n## Tooling\n\n| Script | Role |\n|---|---|\n| `scripts\u002Fcitation_tracker.py` | Consensus three-count audit + 1s sequential discipline at `~\u002F.syllabus_sessions\u002F\u003Csession>.json` |\n| `scripts\u002Ftopic_grouper.py` | Heuristic 6-12 section grouping from extracted topics |\n| `scripts\u002Fdiscussion_question_validator.py` | Bloom higher-order quality check; flags recall-only questions |\n| `scripts\u002Fgenerate_reading_list.js` | **Bundled Node.js DOCX generator** — JSON input → .docx output |\n\n## References\n\n- [`references\u002Fapplied_domain_weaving.md`](references\u002Fapplied_domain_weaving.md) — search-quality canon (7+ sources)\n- [`references\u002Faudience_calibration.md`](references\u002Faudience_calibration.md) — undergrad vs grad summary jargon (7+ sources)\n- [`references\u002Fbundled_script_pattern.md`](references\u002Fbundled_script_pattern.md) — why bundle vs inline (7+ sources)\n\n## Error Handling\n\n| Failure | Behavior |\n|---|---|\n| Consensus rate-limit hit | Wait 3s, retry once, log |\n| Search returns 0 for a section | Note section as \"limited results — consider manual supplementation\" |\n| 3 consecutive failures | Stop, alert user, share collected so far |\n| `docx` package not installed | Script attempts `npm install`; if still failing, fail with clear message |\n| DOCX validation fails | Unpack XML, log issue, ask user to retry |\n| Syllabus format unsupported | List supported formats, ask user to convert |\n| Learning outcomes can't be extracted | Infer 3-5 from course description; mark as inferred in document |\n\n## Anti-Patterns To Reject\n\n- Parallelizing Consensus calls (rate limit)\n- Searching topics without applied-domain angle (poor relevance)\n- Padding sections with fabricated entries when Consensus returns thin\n- Generic discussion questions (\"What did the authors find?\")\n- Jargon-heavy summaries unsuitable for the course's audience level\n- Skipping the group-and-confirm step (wastes searches)\n- Truncating Consensus URLs in hyperlinks\n- Inlining 300 lines of docx-generation JavaScript in the skill body (use bundled script)\n\n---\n\n**Version:** 1.0.0\n**Source spec:** `megaprompts\u002F10-syllabus-megaprompt.md` (maintainer-local draft spec — gitignored, not present in the public repository)\n**Build pattern:** Path B (direct conversion). Bundled-JS-DOCX-generator variant.\n",{"name":5,"license":14,"metadata":55,"description":7},{"version":56,"source_spec":57,"build_pattern":58,"research_pack_convention":59},"1.0.0","megaprompts\u002F10-syllabus-megaprompt.md","Path B (direct conversion)","Agent Integrity Rules verbatim per PR #657 audit; bundled-JS-DOCX-generator variant","main","510dd2917e051cc953dc55f56fd6ef442aa01b38","claude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi","https:\u002F\u002Fgithub.com\u002Fmne20114-hash","2026-10-28 07:50:31",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add mne20114-hash\u002Fgest35bi --skill syllabus",{"tool":72,"command":73},"bunx","bunx skills add mne20114-hash\u002Fgest35bi --skill syllabus",{"tool":75,"command":76},"pnpm","pnpm dlx skills add mne20114-hash\u002Fgest35bi --skill syllabus","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002FSKILL.md",true,[80,86,90,94,100,104,108],{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fapplied_domain_weaving.md","REFERENCE","参考文档",8232,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002Freferences\u002Fapplied_domain_weaving.md",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Faudience_calibration.md",10240,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002Freferences\u002Faudience_calibration.md",{"path":91,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fbundled_script_pattern.md",7280,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002Freferences\u002Fbundled_script_pattern.md",{"path":95,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":98,"sourceHtmlUrl":99},"scripts\u002Fcitation_tracker.py","SCRIPT","脚本",8343,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002Fscripts\u002Fcitation_tracker.py",{"path":101,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":102,"sourceHtmlUrl":103},"scripts\u002Fdiscussion_question_validator.py",8866,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002Fscripts\u002Fdiscussion_question_validator.py",{"path":105,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":106,"sourceHtmlUrl":107},"scripts\u002Fgenerate_reading_list.js",13810,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002Fscripts\u002Fgenerate_reading_list.js",{"path":109,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":110,"sourceHtmlUrl":111},"scripts\u002Ftopic_grouper.py",7125,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002Fscripts\u002Ftopic_grouper.py",[113,135,158,183,203,218],{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":123,"publishedAt":50},"01M6C27DMGZ4D6ERNHSVA8H8RJ","pulse","Multi-source recency research skill that takes the pulse of any topic across Reddit, Hacker News, the open web, and optionally X\u002FTwitter within a configurable recent window (default 30 days). Forcing intake clarifies topic specificity, angle (trend\u002Fsentiment\u002Fproblems\u002Fopportunities\u002Fcomparison), time window, and platform scope before searching. Returns a synthesized briefing with citations, engagement metrics, and cross-platform pattern analysis. Use when the user requests multi-source recency intelligence on a topic (e.g., 'pulse on [topic]', 'what's happening with [topic]', 'what are people saying about [topic]', 'current conversation about [topic]', 'take the pulse of [topic]', 'trending: [topic]', 'find me info on [topic]'), and for competitor research, trend discovery, tool comparisons, and audience sentiment analysis.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fpulse\u002Fskills\u002Fpulse\u002FSKILL.md",[119,122],{"categoryNo":120,"categoryName":121,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[115,124,125,49,126,47,45,127,128,44,129,130,131,132,39,38,133,37,134,33],"research","web","sentiment analysis","sentiment","Citations","analysis","discovery","open","tool","twitter","user",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":146,"publishedAt":50},"01M6C279M59X635VPD6Y9R616J","patent","Patent prior-art and landscape intelligence skill — not generic patent help. Commits to one of five sub-use-cases via forcing intake (novelty search \u002F freedom-to-operate \u002F competitive landscape \u002F acquisition diligence \u002F litigation prior-art) before any search runs. Searches Google Patents, Espacenet, USPTO, and optionally Lens.org for citation-graph signals. Output is an editable Word document (.docx) with verdict, ranked closest art (claim-text extracted), CPC-class-aware landscape, family-resolved hits, geographic coverage, FTO flags where applicable, strategy recommendations, and full audit log. Use when the user asks for patent searching or analysis (e.g., 'prior art search for [invention]', 'freedom to operate analysis for [product]'). Produces search signal, not legal advice — always recommends consulting a patent attorney before filing or licensing decisions. Trademark, copyright, and trade-secret questions are out of scope.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fpatent\u002Fskills\u002Fpatent\u002FSKILL.md",[141,142,143],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":144,"categoryName":145,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000037","律师与法务",[137,40,49,147,148,149,47,46,45,129,150,151,152,38,153,154,155,156,33,157],"competitive landscape","routing","product","commits","Word","text","acquisition","decisions","strategy","coverage","advice",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":168,"publishedAt":50},"01M6C275RZWNRB3CCB14QQM7ES","notebooklm","Browser automation skill for controlling Google's NotebookLM. Use when the user wants anything done in NotebookLM (e.g., 'open NotebookLM', 'check my [name] notebook', 'ask my notebook about X', 'add [source] to NotebookLM', 'generate a Video Overview from my notebook', 'use NotebookLM Studio'). Handles reading and querying notebooks, adding sources (URLs, text, files, YouTube links, synthesized content), generating Studio outputs (Audio\u002FVideo Overviews, Mind Maps, Reports incl. Briefing Doc\u002FStudy Guide\u002FFAQ, Flashcards, Quiz, slide decks, infographics — discover the exact set from the live Studio panel; the UI evolves fast), and creating new notebooks. Requires browser automation environment — fails gracefully when unavailable.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fnotebooklm\u002Fskills\u002Fnotebooklm\u002FSKILL.md",[164,167],{"categoryNo":165,"categoryName":166,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[160,169,170,124,171,172,173,174,175,176,177,178,131,152,39,179,180,181,182,33],"google","browser automation","automation","generate","browser","fast","SET","doc","Video","Audio","check","ask","environment","overview",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":193,"publishedAt":50},"01M6C2717B0QDJ3Y4PJP77BMW5","litreview","Academic literature orientation skill that searches papers via free keyless APIs (PubMed E-utilities + OpenAlex) by default — with the Consensus MCP as an optional enhancement lane when connected — builds a strategic search plan using PICO (default) or SPIDER \u002F Decomposition \u002F hybrid as fallbacks, and synthesizes findings into a formatted Word (.docx) research guide. Grill-me intake (research question specificity + framework hint + tentative depth) before the recon search; a second forcing checkpoint after Phase 2 confirms framework + sub-areas + depth before searches consume budget. Configurable depth (5\u002F10\u002F20 queries) controls coverage vs. speed. Output is a 'launching pad' — an orientation guide that lets a researcher dive in confidently, not a finished review. Use when the user starts literature-oriented research (e.g., 'litreview on [topic]', 'literature review on [topic]', 'I'm starting a literature review on X', 'I'm writing a paper on X', 'help me research X', 'I'm doing research on X', 'can you help me research X'). Do NOT use for single one-off paper searches wanting a quick list — that's a plain PubMed\u002FOpenAlex (or Consensus) query.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Flitreview\u002Fskills\u002Flitreview\u002FSKILL.md",[189,190,191,192],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":120,"categoryName":121,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":26,"categoryName":27,"taxonomyType":28,"taxonomyTypeDesc":29},[185,40,194,195,196,49,47,46,197,198,199,43,200,151,201,38,36,202,156,33],"MCP","writing","review","lane","keyless","literature review","plan","researcher","question",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":213,"publishedAt":50},"01M6C26X5G3WDVWQ40Y16ZS19F","grants","NIH grant research skill for clinical researchers. Grill-me intake (research idea + career stage + preliminary data + environment + submission posture + known institute targets) locks down the funding strategy before any search runs. Runs a 5-facet Consensus positioning analysis (with draft Significance\u002FInnovation language), maps the research to the right NIH institutes and study sections via RePORTER, finds NOSIs and funded overlap, and produces an editable Word document (.docx) with budget\u002Fscope-aware mechanism recommendations, submission timelines, and a mandatory program officer recommendation. Use when the user asks about research funding or makes any grant-related request (e.g., 'grants for [topic]', 'find grants for my research idea', 'what grants match my research', 'help me find NIH funding', 'grant opportunities for my research'). NIH-only scope — non-NIH funders (PCORI, DOD CDMRP, VA, foundations) are out of scope and flagged at intake.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fgrants\u002Fskills\u002Fgrants\u002FSKILL.md",[209,210,211,212],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":120,"categoryName":121,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":26,"categoryName":27,"taxonomyType":28,"taxonomyTypeDesc":29},[205,40,124,49,214,47,46,45,215,216,44,129,151,38,37,36,155,181,33,217],"help","data","Budget","innovation",{"skillNo":219,"name":220,"nameZh":6,"description":221,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":222,"categories":223,"keywords":228,"publishedAt":50},"01M6C26SDXA3MT5XZEDVWZZDWR","dossier","Decision-grade entity research skill — produces a hypothesis-tested dossier on a specific company, person, nonprofit, or government org, not a generic profile. Forcing intake makes the user state their hypothesis upfront (what they already believe and want to verify or disprove) so the dossier tests it rather than confirms it. Output is an editable Word document (.docx) with verdict on the hypothesis, identity facts, 12-month activity timeline, network and reputation signals, red flags, conversation hooks tied to specific findings, and source-provenance audit log. Uses WebSearch + WebFetch + free APIs (SEC EDGAR, GitHub, ProPublica) as workhorses; optional BYOK MCPs enhance coverage. Use when the user asks for background research, diligence, or meeting prep on a specific entity (e.g., 'prep me for a meeting with [person\u002Fcompany]', 'due diligence on [company]'). Honors sensitivity exclusions for journalism + personal-vetting contexts.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fdossier\u002Fskills\u002Fdossier\u002FSKILL.md",[224,225,226,227],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":120,"categoryName":121,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":26,"categoryName":27,"taxonomyType":28,"taxonomyTypeDesc":29},[220,40,229,230,124,49,231,47,45,232,233,234,151,235,38,156,236,237,238,33],"testing","github","state","meeting prep","provenance","verify","decision","webfetch","reputation","byok"]