**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:
1. Course line: matches `/^[A-Z]{3,4}\s+\d{4}-[\w]+\s+-\s+/`
2. Summary line: `Title | Status` or `Title | Status | Instructor`
3. Section Details → location/schedule (or "(empty)")
4. Section Details (duplicate)
5. Campus → value or "(empty)"
6. Instructors → value or "(empty)"
7. Instructional Format → value (usually "Combination")
8. Delivery Mode → value
9. 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
1. Read column A from target sheet(s)
2. Parse each record block → extract all fields
3. Clear existing data
4. Write structured table with bold headers
5. Format I and J columns as number format "0" (not dates)
6. Second pass: fill blank Instructional Format cells with "Combination"
7. 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):
- Peach (#FCE4D6, text #833C0B)
- Light blue (#D6E4F0, text #1F3864)
- Light green (#E2EFDA, text #375623)
- Colors cycle per instructor alphabetically
- **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
1. Read structured data from source tab
2. Filter rows where Instructors column matches any specified instructor
3. Parse Location & Schedule to extract day, time, campus short name, room
4. Sort by day-of-week order, then time, then instructor name
5. Create new sheet "{Semester} Schedules"
6. Write title, headers, data rows with formatting
7. Write summary table below data
8. Apply row coloring, borders, freeze panes
9. 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:
1. Course line: matches /^[A-Z]{3,4}\s+\d{4}-[\w]+\s+-\s+/
2. Summary line: Title | Status or Title | Status | Instructor
3. Section Details → location/schedule (or "(empty)")
4. Section Details (duplicate)
5. Campus → value or "(empty)"
6. Instructors → value or "(empty)"
7. Instructional Format → value (usually "Combination")
8. Delivery Mode → value
9. 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
1. Read column A from target sheet(s)
2. Parse each record block → extract all fields
3. Clear existing data
4. Write structured table with bold headers
5. Format I and J columns as number format "0" (not dates)
6. Second pass: fill blank Instructional Format cells with "Combination"
7. 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):
- Peach (#FCE4D6, text #833C0B)
- Light blue (#D6E4F0, text #1F3864)
- Light green (#E2EFDA, text #375623)
- Colors cycle per instructor alphabetically
- 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
1. Read structured data from source tab
2. Filter rows where Instructors column matches any specified instructor
3. Parse Location & Schedule to extract day, time, campus short name, room
4. Sort by day-of-week order, then time, then instructor name
5. Create new sheet "{Semester} Schedules"
6. Write title, headers, data rows with formatting
7. Write summary table below data
8. 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:
1. Extract CRN from Course column (B) using regex `/[A-Z]{3,4}\s+\d{4}-(\d+)\s+-\s+/`
2. Match CRN against the CRN column in the Report (Credit) tab
3. Pull Instructor value for each matched CRN
4. Multiple instructors for same CRN joined with "; "
5. Skip rows already filled; leave blank if CRN not found
### Steps:
1. Read Report (Credit) tab → build CRN → Instructor(s) map
2. Read structured tab's Course (B) and Instructors (F) columns
3. Extract CRN from each course string via regex
4. Write matched instructor(s) to blank Instructors cells
5. Report: matched count, already-filled count, unmatched count