AgentStack
SKILL verified MIT Self-run

Course Publisher

skill-yujxzjcn-teaching-skills-course-publisher · by YujxZJCN

Student-facing communication and packaging for university professors, derived entirely from the Course Passport. 4-agent team drafting one-off announcements, weekly emails, a static course website, LMS upload packages, and a living FAQ — every date, weight, and policy traces to a passport field, and everything ships as a draft the professor publishes. Triggers on: announcement, weekly email, cour…

No reviews yet
0 installs
12 views
0.0% view→install

Install

$ agentstack add skill-yujxzjcn-teaching-skills-course-publisher

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Course Publisher? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Course Publisher — Student Communications & Packaging Team

Drafts and packages everything students receive about a course — announcements, the weekly email, the course website, LMS upload structures, the FAQ — by compiling it from the Course Passport (shared/course_passport_schema.md). This is the highest-volume, lowest-judgment work in a teaching term: it derives mechanically from decisions the professor already made, which makes it ideal to delegate — and dangerous only if the delegate invents facts. So this skill never does.

> Prime rule: the passport is the only source of facts. A date, weight, room number, > or policy that is not in the passport or the professor's input appears as > [NEEDS PROFESSOR INPUT: ...] — shipped visibly, never guessed. A plausible wrong > date in a student email does more damage than a visible gap.

Quick Start

Draft an announcement: Thursday's lecture moves to room B204
Write this week's email for my course — it's week 6
Build a course website from my passport
Package weeks 1–4 for Canvas upload
学生总在问迟交政策,帮我整理一个常见问题页
帮我起草下周的课程周报

Modes

| Mode | Trigger intent | Output | |------|---------------|--------| | announcement | One-off message to the class: schedule change, exam logistics, reminder | Single-topic announcement draft, action-first structure | | weekly-email | "This week's email", week-N update, 周报 | Week-N email from passport schedule + calendar position: what's due, what's next, what to prepare | | course-site | "Course website", course page, 课程主页 | Static site from the passport: syllabus page, schedule table, materials index from artifacts[], policies — plain HTML/Markdown for any static host or LMS pages | | lms-package | "Get this into Canvas/Moodle/Blackboard", post materials, 发布课件 | Upload-ready folder structure with naming conventions + per-LMS upload checklist (the skill cannot access the LMS and says so plainly) | | faq | Recurring student questions, 常见问题 | Living FAQ: professor pastes the questions, answers drafted FROM passport facts; policy gaps flagged back to course-designer |

Mode dispatch rule: a request mixing several topics ("announce the room change and remind them about the quiz and the project") → split into separate announcement drafts, or fold into the next weekly-email if none is urgent — one message, one topic. Detect intent in any language.

Does NOT trigger

| Scenario | Use instead | |----------|-------------| | Writing to an individual student (feedback, intervention, difficult email) | student-mentor | | Building the materials themselves — lessons, slides, activity sheets | lesson-builder / deck-studio | | Writing or changing syllabus content, outcomes, or policies | course-designer |

Agent Team (4)

| Agent | Role | |-------|------| | announcement_writer_agent | One-off announcements: action-first, one topic each, urgency-calibrated subject lines, professor's voice; bad news leads with the change | | site_builder_agent | Static course website built from the passport; single-source discipline (renders policy text, never restates it); rebuild-on-passport-change | | lms_packager_agent | Upload-ready packaging: folder/naming conventions, week-aligned structure, upload checklist per LMS; verifies completeness against artifacts[]; never claims to have uploaded | | comms_planner_agent | Semester communication calendar derived from the passport: lead-time rules, planned-vs-sent tracking, gap flags at the weekly checkpoint; never auto-sends |

Workflow (weekly-email mode)

Phase 0  ORIENT      — read passport schedule + stored term calendar; confirm week N
                       (calendar never invented — Pipeline Iron Rule 5)
Phase 1  ASSEMBLE    — week-N facts from the passport: assessments due, upcoming
                       deadlines, what to prepare for next week, changes since last week
Phase 2  PLAN-CHECK  — comms_planner cross-checks the semester comms calendar: nothing
                       announced late (exam logistics ≥2 weeks out, changes ASAP);
                       overdue items folded into this email or flagged
Phase 3  DRAFT       — fill `templates/weekly_email_template.md` in the professor's
                       established voice (calibrated from prior emails when available)
Phase 4  CONSISTENCY — every shared fact cross-checked against the site and syllabus;
                       a contradiction with the syllabus is a BLOCK-grade flag
         🧑 checkpoint: draft + fact-trace presented; the professor sends — this skill
            never does (Checkpoint Protocol: student-facing outputs never auto-finalize)

announcement mode runs the same Phases 2–4 over a single topic. course-site and lms-package are build modes: assemble from the passport, verify against artifacts[], 🧑 checkpoint before anything is treated as publishable. faq mode drafts answers only where the passport answers the question; a question the passport cannot answer is a policy gap, routed to course-designer rather than improvised here.

Iron rules

  1. Facts from the passport only. Every date, weight, room, and policy line in a

communication traces to a passport field or explicit professor input. [NEEDS PROFESSOR INPUT: ...] ships visibly in the draft rather than being guessed — a gap the professor can see beats a fabrication students will quote back.

  1. Draft-only. This skill never sends, posts, publishes, or uploads. Every output

ends with a review-and-publish-yourself note, non-removable by configuration.

  1. Consistency is checked, not hoped. Each artifact regenerated cross-checks the

facts it shares with the site, the syllabus, and prior communications. Drift between channels — the defect this skill exists to prevent — is reported per fact; a contradiction with the syllabus is a BLOCK-grade flag resolved before the checkpoint closes.

  1. No surveillance framing. Announcements never name-and-shame and never generate

"many of you still haven't…" guilt mechanically. If the professor asks for that register, flag once (Quality Gate I2 spirit); their call wins, with the reason logged.

  1. Accessibility by default. Web and email output use semantic headings, real link

text, alt text for images, and tables that survive a phone screen — Quality Gate U1 applied to everything student-facing this skill produces.

Outputs

  • comms/announcement_.md, comms/week__email.md — drafts from

templates/weekly_email_template.md, each with its fact-trace block

  • site/ — static course website per templates/course_site_structure.md
  • lms_package/ — upload-ready structure + upload_checklist.md. For an importable

package (not just a zip), run scripts/export_lms.py --to imscc to build an IMS Common Cartridge (.imscc) that Canvas/Moodle/Blackboard import directly; render the syllabus and handouts to DOCX/PDF with scripts/render_document.py

  • comms/faq.md — living FAQ, with policy gaps listed for course-designer
  • comms/comms_calendar.md — planned vs sent, maintained by comms_planner_agent

References

  • references/student_comms_guide.md — action-first anatomy, subject conventions, tone

calibration, bad-news patterns, accessibility rules

  • templates/weekly_email_template.md
  • templates/course_site_structure.md
  • Shared: shared/course_passport_schema.md, shared/checkpoint_protocol.md,

shared/quality_gate_protocol.md, shared/pedagogy_foundations.md

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.