Copy everything below this line and paste it as your first message in a new conversation:
Please save the following two custom skills to your always-on instructions so they persist across all my conversations:
Custom Skill: /transpose-course
Purpose
Parse raw single-column course schedule data (web-scraped, pasted into column A) into a structured multi-column table.
Output Columns
A: Row#, B: Course, C: Status, D: Campus, E: Location & Schedule, F: Instructors, G: Instructional Format, H: Delivery Mode, I: Enrolled, J: Capacity, K: (blank)
Parsing Logic
Each record in column A follows this repeating block:
- Course line: matches
/^[A-Z]{3,4}\s+\d{4}-[\w]+\s+-\s+/ - Summary line:
Title | StatusorTitle | Status | Instructor - Section Details → location/schedule (or "(empty)")
- Section Details (duplicate)
- Campus → value or "(empty)"
- Instructors → value or "(empty)"
- Instructional Format → value (usually "Combination")
- Delivery Mode → value
- Enrolled/Capacity → "X/Y" or 5-digit Excel date serial
Date Serial Fix
Excel auto-converts "11/18" (enrolled/capacity) to date serial 46344. Reverse: convert serial to date, use month as Enrolled and day as Capacity.
const d = new Date(Date.UTC(1899,11,30) + serial * 86400000); enrolled = d.getUTCMonth() + 1; capacity = d.getUTCDate();
Steps
- Read column A from target sheet(s)
- Parse each record block → extract all fields
- Clear existing data
- Write structured table with bold headers
- Format I and J columns as number format "0" (not dates)
- Second pass: fill blank Instructional Format cells with "Combination"
- Verify record count matches original "X Results" header
Custom Skill: /instructor-schedule
Purpose
Build a weekly schedule table for specified instructors from a semester's structured course data tab. Creates a new "{Semester} Schedules" tab.
Required Input
- Source tab name (e.g., "Spring 2026") — must already be in structured table format
- List of instructor names to include
Output Format
New sheet named "{Semester} Schedules" with:
-
Row 1: Title — "{Semester} — Weekly Schedule: Instructor1, Instructor2, ..." (bold, white text, dark blue bg #2F5496, font 14pt Aptos Narrow, merged across A1
)
-
Row 2: Blank spacer
-
Row 3: Headers — Day, Time, Instructor, Course, Title, Campus, Room, Enrolled, Capacity (bold, white text, blue bg #4472C4, centered)
-
Data rows: Grouped by day of week (Monday–Saturday), sorted by time then instructor
-
Day name appears only on first row of each day group (bold)
-
Time: extracted from Location & Schedule, formatted with en-dash (e.g., "9
AM – 2
PM")
-
Course: code only (e.g., "ARTV 1303-001"), parsed from full course string before " - "
-
Title: course name after " - " in the Course column
-
Campus: shortened ("Frisco Campus" → "Frisco", "Wylie Campus" → "Wylie", "Plano Campus" → "Plano")
-
Room: extracted from location string (e.g., "Frisco IT104" → "IT104", "Wylie CC222" → "CC222")
-
Enrolled & Capacity: numbers from source
-
-
Row coloring (alternating by instructor within day):
-
Day separator borders: thin solid #8DB4E2 between day groups
-
Blank rows after data, then Summary table:
- Headers: Instructor, Sections, Total Enrolled, Total Capacity (same blue header style)
- One row per instructor with counts/sums, same alternating row colors
-
Freeze rows 1-3
Steps
- Read structured data from source tab
- Filter rows where Instructors column matches any specified instructor
- Parse Location & Schedule to extract day, time, campus short name, room
- Sort by day-of-week order, then time, then instructor name
- Create new sheet "{Semester} Schedules"
- Write title, headers, data rows with formatting
- Write summary table below data
- Apply row coloring, borders, freeze panes
- Auto-fit column widths
Claude for Excel — Custom Skills
Paste this entire block as your first message in a new Claude for Excel conversation to restore these skills.
Say: "Please save these to your always-on instructions."
Custom Skill: /transpose-course
Purpose Parse raw single-column course schedule data (web-scraped, pasted into column A) into a structured multi-column table.
Output Columns
A: Row#, B: Course, C: Status, D: Campus, E: Location & Schedule, F: Instructors, G: Instructional Format, H: Delivery Mode, I: Enrolled, J: Capacity, K: (blank)
Parsing Logic
Each record in column A follows this repeating block:
- Course line: matches /[1]{3,4}\s+\d{4}-[\w]+\s+-\s+/
- Summary line: Title | Status or Title | Status | Instructor
- Section Details → location/schedule (or "(empty)")
- Section Details (duplicate)
- Campus → value or "(empty)"
- Instructors → value or "(empty)"
- Instructional Format → value (usually "Combination")
- Delivery Mode → value
- Enrolled/Capacity → "X/Y" or 5-digit Excel date serial
Date Serial Fix
Excel auto-converts "11/18" (enrolled/capacity) to date serial 46344.
Reverse: convert serial to date, use month as Enrolled and day as Capacity.
const d = new Date(Date.UTC(1899,11,30) + serial * 86400000); enrolled = d.getUTCMonth() + 1; capacity = d.getUTCDate();
Steps
- Read column A from target sheet(s)
- Parse each record block → extract all fields
- Clear existing data
- Write structured table with bold headers
- Format I and J columns as number format "0" (not dates)
- Second pass: fill blank Instructional Format cells with "Combination"
- Verify record count matches original "X Results" header
Custom Skill: /instructor-schedule
Purpose Build a weekly schedule table for specified instructors from a semester's structured course data tab.
Creates a new "{Semester} Schedules" tab.
Required Input
- Source tab name (e.g., "Spring 2026") — must already be in structured table format
- List of instructor names to include
Output Format
New sheet named "{Semester} Schedules" with:
- Row 1: Title — "{Semester} — Weekly Schedule: Instructor1, Instructor2, ..." (bold, white text, dark blue bg #2F5496, font 14pt Aptos Narrow, merged across A1:I1)
- Row 2: Blank spacer
- Row 3: Headers — Day, Time, Instructor, Course, Title, Campus, Room, Enrolled, Capacity (bold, white text, blue bg #4472C4, centered)
- Data rows: Grouped by day of week (Monday–Saturday, then Online), sorted by time then instructor
- Day name appears only on first row of each day group (bold)
- Time: extracted from Location & Schedule, formatted with en-dash (e.g., "9:00 AM – 2:50 PM") - Course: code only (e.g., "ARTV 1303-001"), parsed from full course string before " - "
- Title: course name after " - " in the Course column
- Campus: shortened ("Frisco Campus" → "Frisco", "Wylie Campus" → "Wylie", "Plano Campus" → "Plano")
- Room: extracted from location string (e.g., "Frisco IT104" → "IT104", "Wylie CC222" → "CC222") - Enrolled & Capacity: numbers from source
- Courses with no day/time (Web/Online) grouped under "Online" with time "Asynchronous"
- Row coloring (alternating by instructor within day):
- Blank rows after data, then Summary table:
- Headers: Instructor, Sections, Total Enrolled, Total Capacity (same blue header style)
- One row per instructor with counts/sums, same alternating row colors - Freeze rows 1-3
Steps
- Read structured data from source tab
- Filter rows where Instructors column matches any specified instructor
- Parse Location & Schedule to extract day, time, campus short name, room
- Sort by day-of-week order, then time, then instructor name
- Create new sheet "{Semester} Schedules"
- Write title, headers, data rows with formatting
- Write summary table below data
- Apply row coloring, borders, freeze panes 9. Auto-fit column widths
Custom Skill: /populate-instructors
- Match courses between a structured semester tab and its Report (Credit) tab by CRN to populate missing Instructor names.
Required Input:
- Two tabs — a structured semester tab (e.g., "Spring 2022") and its Report (Credit) tab (e.g., "Spring 2022 Report (Credit)")
Matching Logic:
- Extract CRN from Course column (B) using regex
/[A-Z]{3,4}\s+\d{4}-(\d+)\s+-\s+/ - Match CRN against the CRN column in the Report (Credit) tab
- Pull Instructor value for each matched CRN
- Multiple instructors for same CRN joined with "; "
- Skip rows already filled; leave blank if CRN not found
Steps:
- Read Report (Credit) tab → build CRN → Instructor(s) map
- Read structured tab's Course (B) and Instructors (F) columns
- Extract CRN from each course string via regex
- Write matched instructor(s) to blank Instructors cells
- Report: matched count, already-filled count, unmatched count
A-Z ↩︎