
Badm350 Canvas Builder
- 6 installs
- 2 repo stars
- Updated August 1, 2026
- vishalsachdev/claude-skills
Helps with ai & agent building tasks.
About
badm350-canvas-builder is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- badm350-canvas-builder
- AI & Agent Building
- AI-coding skill
Badm350 Canvas Builder by the numbers
- 6 all-time installs (skills.sh)
- +1 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Ranked #12,739 of 16,556 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vishalsachdev/claude-skills --skill badm350-canvas-builderAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 6 |
|---|---|
| repo stars | ★ 2 |
| Last updated | August 1, 2026 |
| Repository | vishalsachdev/claude-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
BADM 350 Canvas Content Builder
Converts BADM 350 week markdown files into Canvas-ready HTML following the Gies College course style guide.
Workflow
1. Identify Source Files
Week content lives in:
/Users/vishal/teaching/badm350/modules/unit-X-*/week-NN-topic.mdStyle guide at:
/Users/vishal/teaching/badm350/canvas-style-guide.md2. Generate Start Here Page
Read the week markdown and extract:
- Learning objectives (with L-C-E tier)
- Session agendas (Tuesday/Thursday, 75 min each)
- Before/During/After Class tasks
- Readings and resources
- Lab deliverable info
Apply the Start Here template from references/start-here-template.md.
Output to: /Users/vishal/teaching/badm350/canvas-html/week-NN-start-here.html
3. Generate Assignment HTML
Identify assignment type from lab deliverable section:
- Lab: Hands-on practice, 10 pts, completion-based rubric
- Discussion: Article analysis + peer replies, 10-15 pts
- Position Paper: Debate prep + evidence, 15-20 pts
- Essay: Framework application + research, 15 pts
Apply appropriate template from references/assignment-templates.md.
Output to: /Users/vishal/teaching/badm350/canvas-html/week-NN-[assignment-name].html
4. Upload to Canvas
Use Canvas MCP tools:
Create page:
mcp__canvas-api__create_page(course_identifier="67619", title="Week N Start Here", body=<html>, published=true)Create module:
mcp__canvas-api__create_module(course_identifier="67619", name="Week N: Topic", position=N, published=true)Add item to module:
mcp__canvas-api__add_module_item(course_identifier="67619", module_id=<id>, item_type="Page", page_url="week-n-start-here")Create assignment:
mcp__canvas-api__create_assignment(
course_identifier="67619",
name="Assignment Name",
description=<generated_html>,
points_possible=10,
submission_types="online_text_entry",
due_at="2026-01-26T05:59:00Z"
)5. Generate Setup Instructions
Create /Users/vishal/teaching/badm350/canvas-html/week-NN-canvas-setup.md with:
- Canvas assignment settings (name, points, due date, submission type)
- Rubric configuration table
- Module item order
Key Style Elements
| Element | Value |
|---|---|
| Icons | Orange #ff5f05 |
| Footer | Navy #12284c |
| CSS | https://instructure-uploads.s3.amazonaws.com/account_145590000000000001/attachments/9675811/dp_app.css |
| JS | https://instructure-uploads.s3.amazonaws.com/account_145590000000000001/attachments/9675810/dp_app.js |
| Banner | https://files.ciditools.com/illinoisedu/UIUC_banner_Creative_1.png |
Session Structure (Tuesday/Thursday)
Each session has three phases:
- Before Class: Checklist of prep tasks with time estimates
- During Class: Table with Time | Activity | Purpose columns
- After Class: Tasks and upcoming deliverables
Reference Files
references/start-here-template.md- Full HTML template for Start Here pagesreferences/assignment-templates.md- Templates for Lab, Discussion, Position Paper, Essayreferences/rubric-patterns.md- Standard rubric configurations
Canvas Course Info
- Course ID: 67619 (Spring 2026)
- Format: On-campus, Tuesday/Thursday, 75 min each
- Class Size: ~19 students
Assignment Templates
Template Selection Logic
| Pattern | Points | Submission | Example |
|---|---|---|---|
| Lab | 10 | Text entry | Magazine Analysis, SQL Practice |
| Discussion | 10-15 | Discussion board | Case Discussion, Yellowdig |
| Position Paper | 15-20 | Text + file | AI Debate, Ethics Paper |
| Essay | 15 | File upload | Framework Application |
Lab Assignment Template
<link rel="stylesheet" href="https://instructure-uploads.s3.amazonaws.com/account_145590000000000001/attachments/9675811/dp_app.css">
<div id="kl_wrapper_3" class="kl_flat_sections variation_2 kl_wrapper">
<div id="kl_custom_block_sub_0">
<h2>Week {N} Assignment: {TITLE}</h2>
</div>
<div id="kl_custom_block_purpose" class="">
<h3 class="">
<i class="fas fa-street-view" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Purpose
</h3>
<p>This assignment helps you:</p>
<ul>
{PURPOSE_ITEMS}
</ul>
</div>
<div id="kl_custom_block_assessment" class="">
<h3 class="">
<i class="fas fa-apple-alt" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Assessment
</h3>
<ul>
<li><strong>{POINTS} points</strong> (part of Weekly Labs, 25% of course grade)</li>
<li>See rubric below for grading criteria</li>
</ul>
</div>
<div id="kl_custom_block_instructions" class="">
<h3 class="">
<i class="fas fa-clipboard-list" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Instructions
</h3>
{INSTRUCTIONS_CONTENT}
</div>
<div id="kl_custom_block_submission" class="">
<h3 class="">
<i class="fas fa-upload" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Submission
</h3>
<p><strong>Format:</strong> {SUBMISSION_FORMAT}</p>
<p><strong>Due:</strong> {DUE_DATE}</p>
{SUBMISSION_TEMPLATE}
</div>
<div id="kl_custom_block_rubric" class="">
<h3 class="">
<i class="fas fa-th-list" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Rubric ({POINTS} points)
</h3>
{RUBRIC_TABLE}
</div>
<div id="kl_custom_block_tips" class="">
<h3 class="">
<i class="fas fa-lightbulb" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Tips for Success
</h3>
<ul>
{TIPS_ITEMS}
</ul>
</div>
<div id="kl_custom_block_3" class="">
<h3 class="">
<i class="far fa-arrow-alt-circle-right" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Next Steps
</h3>
<p>{NEXT_STEPS}</p>
</div>
<div id="kl_custom_block_2" class="" style="background-color: #12284c; color: #ffffff; padding: 5px 0px 0px;">
<p class="kl_module_progress_completion" style="display: none;">Module Item Completion</p>
</div>
</div>
<script src="https://instructure-uploads.s3.amazonaws.com/account_145590000000000001/attachments/9675810/dp_app.js"></script>Rubric Table Template
<table style="width: 100%; border-collapse: collapse;" border="1">
<thead>
<tr style="background-color: #12284c; color: #ffffff;">
<th style="padding: 10px; text-align: left;">Criterion</th>
<th style="padding: 10px; text-align: center; width: 20%;">Full Credit</th>
<th style="padding: 10px; text-align: center; width: 20%;">Partial Credit</th>
<th style="padding: 10px; text-align: center; width: 20%;">No Credit</th>
<th style="padding: 10px; text-align: center; width: 10%;">Points</th>
</tr>
</thead>
<tbody>
{RUBRIC_ROWS}
</tbody>
<tfoot>
<tr style="background-color: #f5f5f5;">
<td colspan="4" style="padding: 10px; text-align: right;"><strong>Total</strong></td>
<td style="padding: 10px; text-align: center;"><strong>{TOTAL_POINTS}</strong></td>
</tr>
</tfoot>
</table>Rubric Row Template
<tr>
<td style="padding: 10px;"><strong>{CRITERION_NAME}</strong><br><em>{CRITERION_QUESTION}</em></td>
<td style="padding: 10px; text-align: center;">{FULL_DESCRIPTION}</td>
<td style="padding: 10px; text-align: center;">{PARTIAL_DESCRIPTION}</td>
<td style="padding: 10px; text-align: center;">{NO_CREDIT_DESCRIPTION}</td>
<td style="padding: 10px; text-align: center;"><strong>{POINTS}</strong></td>
</tr>Submission Template Box
<div style="background-color: #f5f5f5; padding: 15px; border-left: 4px solid #ff5f05; margin: 10px 0;">
<p><strong>Field 1:</strong> [Description]</p>
<p><strong>Field 2:</strong> [Description]</p>
</div>Instructions Step Pattern
<h4 style="margin-top: 15px; color: #12284c;">Step {N}: {STEP_TITLE}</h4>
<p>{STEP_INTRO}</p>
<ul>
{STEP_ITEMS}
</ul>Position Paper Additions
For position papers, add debate structure:
<div id="kl_custom_block_debate" class="">
<h3 class="">
<i class="fas fa-balance-scale" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Debate Position
</h3>
<p>You will be assigned to argue <strong>FOR</strong> or <strong>AGAINST</strong> the following statement:</p>
<blockquote style="border-left: 4px solid #ff5f05; padding-left: 15px; margin: 15px 0; font-style: italic;">
"{DEBATE_STATEMENT}"
</blockquote>
<p><strong>Your assigned position:</strong> You will be notified in class.</p>
</div>Essay Additions
For essays, add citation requirements:
<div id="kl_custom_block_format" class="">
<h3 class="">
<i class="fas fa-file-alt" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Format Requirements
</h3>
<ul>
<li><strong>Length:</strong> {WORD_COUNT} words</li>
<li><strong>Format:</strong> {FORMAT_REQUIREMENTS}</li>
<li><strong>Citations:</strong> {CITATION_STYLE}</li>
<li><strong>File type:</strong> PDF or Word document</li>
</ul>
</div>Rubric Patterns
Standard Lab Rubric (10 points)
| Criterion | Full | Partial | None | Points |
|---|---|---|---|---|
| Task Completion | All required tasks completed | Some tasks incomplete | Most tasks missing | 4 |
| Participation/Engagement | Active contribution | Minimal participation | Absent | 3 |
| Reflection/Documentation | Thoughtful, complete | Surface-level | Not submitted | 3 |
Position Paper Rubric (20 points)
| Criterion | Full | Partial | None | Points |
|---|---|---|---|---|
| Argument Clarity | Clear thesis, logical structure | Unclear thesis or weak structure | No clear argument | 5 |
| Evidence Quality | Multiple credible sources, well-integrated | Limited sources or weak integration | No evidence | 5 |
| Counter-argument | Addresses opposing view effectively | Weak acknowledgment | Ignores opposition | 4 |
| Writing Quality | Clear, professional, error-free | Minor issues | Significant errors | 3 |
| Forum Engagement | Substantive replies to peers | Minimal engagement | No replies | 3 |
Case Memo Rubric (20 points)
| Criterion | Full | Partial | None | Points |
|---|---|---|---|---|
| Problem Analysis | Clear problem identification with evidence | Unclear or incomplete | Missing | 5 |
| Framework Application | Correctly applies IS concepts | Partial or incorrect | No framework | 5 |
| Strategic Insight | Novel, actionable recommendations | Generic or obvious | No recommendations | 5 |
| Professional Format | Executive summary, structure, length | Minor format issues | Poor format | 3 |
| Citations | Proper attribution | Incomplete | Missing | 2 |
Essay Rubric (15 points)
| Criterion | Full | Partial | None | Points |
|---|---|---|---|---|
| Thesis & Structure | Clear argument, logical flow | Unclear or weak | Missing | 4 |
| Analysis Depth | Insightful, goes beyond surface | Descriptive only | Superficial | 4 |
| Evidence & Citations | Well-supported, proper format | Limited support | No evidence | 4 |
| Writing Quality | Professional, polished | Minor errors | Poor quality | 3 |
Project Checkpoint Rubric (25 points)
| Criterion | Full | Partial | None | Points |
|---|---|---|---|---|
| Problem Clarity | Specific, authentic, well-motivated | Vague or forced | Unclear | 5 |
| Design & UX | User-centered, intuitive | Usable but rough | Poor UX | 5 |
| Technical Execution | Functional, deployed, robust | Partially working | Non-functional | 5 |
| Business Value | Clear ROI, market fit | Weak business case | No value prop | 5 |
| Iteration & Learning | Visible improvement, reflection | Some iteration | No growth shown | 5 |
Canvas Rubric Setup Instructions
When creating a rubric in Canvas:
1. Go to Assignment → Add Rubric 2. For each criterion:
- Title: Criterion name (e.g., "Task Completion")
- Description: The question in italics (e.g., "Did you complete all required tasks?")
- Ratings: Add 3 levels (Full, Partial, None) with descriptions
- Points: Assign per criterion
3. Settings:
- Check "Use this rubric for assignment grading"
- Uncheck "Hide score total" (show students their score)
- Check "Free-form comments" if using
Markdown Table for Setup Docs
| Criterion | Points | Ratings |
|-----------|--------|---------|
| **{Name}** | {N} | Full ({N}): {desc} / Partial ({N/2}): {desc} / None (0): {desc} |Start Here Page Template
HTML Structure
<link rel="stylesheet" href="https://instructure-uploads.s3.amazonaws.com/account_145590000000000001/attachments/9675811/dp_app.css">
<div id="kl_wrapper_3" class="kl_flat_sections variation_2 kl_wrapper">
<!-- Header -->
<div id="kl_banner" class="" style="margin-bottom: 0px; padding-top: 40px; padding-bottom: 10px;">
<h2>
<span id="kl_banner_left">
<span class="kl_mod_text">Week </span>
<span class="kl_mod_num">{WEEK_NUM}</span>
</span>
<span id="kl_banner_right">{TOPIC_TITLE}</span>
</h2>
</div>
<!-- Banner Image -->
<div id="kl_banner_image">
<img class="kl_image_full_width"
style="width: 100%; height: auto; max-width: 100%;"
role="presentation"
src="https://files.ciditools.com/illinoisedu/UIUC_banner_Creative_1.png"
alt=""
loading="lazy">
</div>
<!-- Topic Overview -->
<div id="kl_custom_block_0" class="">
<h3 class="">
<i class="fas fa-binoculars" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Topic Overview
</h3>
<p><strong>{MAIN_QUESTION}</strong></p>
<p>{OVERVIEW_PARAGRAPH}</p>
<p><strong>Unit {UNIT_LETTER}: {UNIT_NAME}</strong> | {UNIT_CONTEXT}</p>
</div>
<!-- Objectives -->
<div id="kl_objectives2" class="">
<h3>
<i class="fa fa-check" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Learning Objectives
</h3>
<p>By the end of this week, you will be able to:</p>
<ol style="list-style-type: decimal;">
{OBJECTIVES_LIST}
</ol>
</div>
<!-- TUESDAY SESSION -->
<div id="kl_custom_block_tuesday" class="">
<h3 class="">
<i class="fas fa-calendar-day" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
TUESDAY | Session 1: {SESSION1_TITLE} (75 min)
</h3>
<h4 style="margin-top: 15px; color: #12284c;">Before Class</h4>
<ul style="list-style-type: none; padding-left: 0;">
{TUESDAY_BEFORE_CLASS}
</ul>
<h4 style="margin-top: 15px; color: #12284c;">During Class</h4>
<table style="width: 100%; border-collapse: collapse;" border="1">
<thead>
<tr style="background-color: #f5f5f5;">
<th style="text-align: left; padding: 8px; width: 15%;">Time</th>
<th style="text-align: left; padding: 8px; width: 45%;">Activity</th>
<th style="text-align: left; padding: 8px; width: 40%;">Purpose</th>
</tr>
</thead>
<tbody>
{TUESDAY_AGENDA_ROWS}
</tbody>
</table>
<h4 style="margin-top: 15px; color: #12284c;">After Class</h4>
<ul style="list-style-type: none; padding-left: 0;">
{TUESDAY_AFTER_CLASS}
</ul>
</div>
<!-- THURSDAY SESSION -->
<div id="kl_custom_block_thursday" class="">
<h3 class="">
<i class="fas fa-calendar-day" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
THURSDAY | Session 2: {SESSION2_TITLE} (75 min)
</h3>
<h4 style="margin-top: 15px; color: #12284c;">Before Class {TIME_ESTIMATE}</h4>
<ul style="list-style-type: none; padding-left: 0;">
{THURSDAY_BEFORE_CLASS}
</ul>
<h4 style="margin-top: 15px; color: #12284c;">During Class</h4>
<table style="width: 100%; border-collapse: collapse;" border="1">
<thead>
<tr style="background-color: #f5f5f5;">
<th style="text-align: left; padding: 8px; width: 15%;">Time</th>
<th style="text-align: left; padding: 8px; width: 45%;">Activity</th>
<th style="text-align: left; padding: 8px; width: 40%;">Purpose</th>
</tr>
</thead>
<tbody>
{THURSDAY_AGENDA_ROWS}
</tbody>
</table>
<h4 style="margin-top: 15px; color: #12284c;">After Class</h4>
<ul style="list-style-type: none; padding-left: 0;">
{THURSDAY_AFTER_CLASS}
</ul>
</div>
<!-- Readings/Resources -->
<div id="kl_readings2">
<h3>
<i class="fa fa-book" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Readings & Resources
</h3>
{READINGS_CONTENT}
</div>
<!-- Key Discussion Questions (optional) -->
<div id="kl_custom_block_discussion" class="">
<h3 class="">
<i class="fas fa-comments" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Key Discussion Questions
</h3>
<p>Come prepared to discuss:</p>
<ol>
{DISCUSSION_QUESTIONS}
</ol>
</div>
<!-- Next Steps -->
<div id="kl_custom_block_3" class="">
<h3 class="">
<i class="far fa-arrow-alt-circle-right" style="color: #ff5f05;" aria-hidden="true">
<span class="dp-icon-content" style="display: none;"> </span>
</i>
Next Steps
</h3>
<p><strong>This Week:</strong></p>
<ul>
{THIS_WEEK_TASKS}
</ul>
<p><strong>Looking Ahead:</strong> {LOOKING_AHEAD}</p>
</div>
<!-- Footer -->
<div id="kl_custom_block_2" class="" style="background-color: #12284c; color: #ffffff; padding: 5px 0px 0px;">
<p class="kl_module_progress_completion" style="display: none; background-color: #ff5f05; color: #000000;">
Module Item Completion
</p>
</div>
</div>
<script src="https://instructure-uploads.s3.amazonaws.com/account_145590000000000001/attachments/9675810/dp_app.js"></script>Placeholder Reference
| Placeholder | Source | Example |
|---|---|---|
{WEEK_NUM} | Week number | 1, 2, 3 |
{TOPIC_TITLE} | Markdown h1 or theme | IS Fundamentals |
{MAIN_QUESTION} | Theme question | What is an Information System? |
{OVERVIEW_PARAGRAPH} | Generate from theme | 2-3 sentences |
{UNIT_LETTER} | From markdown Unit field | A, B, C, D, E |
{UNIT_NAME} | Unit full name | Foundations |
{OBJECTIVES_LIST} | From Learning Objectives table | <li> items with L-C-E tags |
{SESSION1_TITLE} | From Session 1 heading | Course Introduction |
{TUESDAY_BEFORE_CLASS} | Pre-class prep items | <li> checkboxes |
{TUESDAY_AGENDA_ROWS} | From activity table | <tr> rows |
{TUESDAY_AFTER_CLASS} | Post-class tasks | <li> checkboxes |
{SESSION2_TITLE} | From Session 2 heading | IS Foundations |
{TIME_ESTIMATE} | Total prep time | <span>(~60 min)</span> |
{THURSDAY_BEFORE_CLASS} | Readings + prep | <li> with nested <ul> |
{THURSDAY_AGENDA_ROWS} | From activity table | <tr> rows |
{THURSDAY_AFTER_CLASS} | Deliverables + preview | <li> items |
{READINGS_CONTENT} | From Readings section | Required + Supplementary |
{DISCUSSION_QUESTIONS} | Key Discussion Questions | <li> items |
{THIS_WEEK_TASKS} | Summary of deliverables | <li> items |
{LOOKING_AHEAD} | Preview of next week | 1 sentence |
HTML Snippets
Objective Item
<li><strong>{VERB}</strong> {description} <em>({LCE_TIER})</em></li>Before Class Checkbox
<li>☐ {task_description}</li>Before Class with Nested List
<li>☐ <strong>{main_task}</strong> — {time_estimate}
<ul style="margin-top: 5px;">
<li>{subtask_1}</li>
<li>{subtask_2}</li>
</ul>
</li>Agenda Table Row
<tr>
<td style="padding: 8px;">{time_range}</td>
<td style="padding: 8px;">{activity}</td>
<td style="padding: 8px;">{purpose}</td>
</tr>External Link
<a href="{url}" target="_blank" class="inline_disabled">{text}</a>Internal Canvas Link (Relative)
<a href="/courses/67619/{path}">{text}</a>Common Internal Links
- Syllabus:
/courses/67619/assignments/syllabus - Grades:
/courses/67619/grades - Modules:
/courses/67619/modules - Pages:
/courses/67619/pages/{page-url}