Agent skill
master-schedule
Silent setup check. Verifies canoa.json exists and the sheet is accessible. If not, copies the template sheet to the user's account and writes canoa.json. Called automatically by other skills before reading or writing product data.
Install this agent skill to your Project
npx add-skill https://github.com/AlpacaLabsLLC/skills-for-architects/tree/main/plugins/06-materials-research/skills/master-schedule
SKILL.md
/master-schedule — Sheet Setup Check
Called automatically by all product skills before reading or writing. Can also be run manually to reconnect or reset.
Template sheet ID: 1mWnExnSWTKJv0vbu1mDnrQFmv_Iz_fNklIeuBYfMB5k
Step 1: Check for canoa.json
cat ./canoa.json 2>/dev/null
Found and valid → Step 2 (verify access)
Not found → Step 3 (auto-setup)
Step 2: Verify Sheet Access
Call mcp__google-sheets__list_sheets with the master_sheet_id from canoa.json.
- Success → sheet is accessible. Return silently — the calling skill continues.
- 404 / error → sheet was deleted or moved. Proceed to Step 3 to set up a new one.
Step 3: Auto-Setup
No config found or sheet inaccessible. Set up automatically without asking the user.
3a: Copy the template
Attempt to copy the template sheet using the Google Drive API (files.copy). If a Drive MCP tool is available, use it:
drive.files.copy
fileId: "1mWnExnSWTKJv0vbu1mDnrQFmv_Iz_fNklIeuBYfMB5k"
title: "Product Library — {today's date}"
If no Drive copy tool is available, fall back to creating a new spreadsheet and writing the header row:
- Call
mcp__google-sheets__create_spreadsheetwith title"Product Library — {today's date}" - Write the 33-column header row to
Sheet1!A1:AG1using the CSV header from../../schema/product-schema.md
Note in canoa.json whether this was a template copy or a fresh sheet ("setup": "copy" or "setup": "fresh").
3b: Identify the Products tab
Look for a tab named Products. If not found (e.g. fresh sheet named Sheet1), use whatever tab exists and record its name in canoa.json.
3c: Write canoa.json
{
"master_sheet_id": "{new sheet ID}",
"sheet_title": "Product Library — {date}",
"sheet_url": "https://docs.google.com/spreadsheets/d/{id}",
"products_tab": "Products",
"project_name": "",
"setup": "copy",
"created_at": "{ISO timestamp}"
}
3d: Notify the user
✓ Product library created and connected.
docs.google.com/spreadsheets/d/{id}
You may want to rename this sheet and set a project name.
Run /master-schedule to update.
Then return — the calling skill continues.
Manual Run
When invoked directly (/master-schedule), run the same flow but also:
- If
canoa.jsonexists and the sheet is accessible, show current status:
Product library connected.
Project: {project_name or "(unnamed)"}
Sheet: {sheet_title}
URL: docs.google.com/spreadsheets/d/{id}
Tab: {products_tab}
Options:
1. Update project name
2. Connect a different sheet (paste URL)
3. Reset (create a new copy of the template)
- If user chooses (2), ask for URL, validate, update
canoa.json. - If user chooses (3), run Step 3 again.
MCP Connection Errors
If any MCP call fails with "tool not found" or auth error, stop and report:
Google Sheets MCP is not connected or not authenticated.
To connect it, add to ~/.claude/mcp_settings.json:
{
"mcpServers": {
"google-sheets": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-google-sheets"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "<path-to-service-account-json>"
}
}
}
}
Then restart Claude Code and try again.
Need help creating a service account? Ask for instructions.
Edge Cases
| Situation | Handling |
|---|---|
canoa.json exists, sheet accessible |
Return silently |
canoa.json exists, sheet deleted |
Auto-create new copy, update canoa.json |
canoa.json missing |
Auto-create new copy, write canoa.json |
| Drive copy tool not available | Fall back to fresh sheet + header row |
| MCP not connected | Stop, show setup instructions |
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
slide-deck-generator
Generate a polished HTML slide deck from a topic, outline, or data. Outputs a self-contained .html file with keyboard/touch navigation, responsive typography, and the ALPA (Alpaca Labs) design system — Helvetica, editorial layout, clean white backgrounds.
resize-images
Batch-resize images for web (WebP at 1920/1200/400px), social (center-cropped WebP at Instagram square/portrait, Twitter/X, LinkedIn), slides (center-cropped JPEG at 1024×768 and 1920×1080), and print (300 DPI JPEG at ARCH A 9×12, ARCH B 12×18, ARCH C 18×24). Asks user for source folder, outputs resized copies into subfolders within that folder.
color-palette-generator
Color palette generator — creates harmonious color palettes from descriptions, moods, or images. Outputs a self-contained HTML file with swatches, hex/RGB/HSL codes, contrast ratios, and example pairings.
demographics-analysis
Demographics and market site analysis — population, income, age, housing market, and employment data from an address.
history
Neighborhood context and history — adjacent uses, architectural character, landmarks, commercial activity, and planned development from an address.
environmental-analysis
Climate and environmental site analysis — temperature, precipitation, wind, sun angles, flood zones, seismic risk, soil, and topography from an address.
Didn't find tool you were looking for?