alpacalabsllc/master-schedule
Initialize, validate, inspect, or import the current project's local FF&E product library. Use when a product workflow needs product-library.csv, when the user invokes /as:master-schedule, or when legacy master-schedule.json or canoa.json configuration is present.
npx skills add https://github.com/AlpacaLabsLLC/skills-for-architects --skill master-schedule
Manage the current project's product-library.csv. This workflow is local-only: do not use a network service, connector, account, spreadsheet identifier, or MCP tool.
Use the deterministic helper instead of constructing or changing CSV with ad hoc shell or prompt logic:
python3 "${CLAUDE_PLUGIN_ROOT}/skills/master-schedule/scripts/csv-library.py" status product
The helper resolves the nearest project root by walking upward to PROJECT.md. The canonical schema is ${CLAUDE_PLUGIN_ROOT}/schema/product-schema.md; storage rules are in ${CLAUDE_PLUGIN_ROOT}/schema/csv-conventions.md.
status product from the user's current working directory.init product after confirmation.PROJECT.md.When the user invokes /as:master-schedule directly:
status product.init product.Do not ask in prose whether to proceed immediately before presenting an approval gate. The gate itself is the question.
Import is explicit and never automatic:
python3 "${CLAUDE_PLUGIN_ROOT}/skills/master-schedule/scripts/csv-library.py" import product --source "/absolute/path/to/user-exported.csv"
Before import, state the source and target paths and that the complete source will be validated against the exact 33-column schema. Use one confirmation gate. The helper refuses a malformed source and refuses to overwrite a populated target.
For a reviewed operation that intentionally replaces the complete populated library, use the explicit replacement flag after preview and confirmation:
python3 "${CLAUDE_PLUGIN_ROOT}/skills/master-schedule/scripts/csv-library.py" import product --source "/absolute/path/to/reviewed-library.csv" --replace-existing
This validates the complete candidate and current library before one guarded atomic replacement. It fails closed if either file is malformed or if the target changes after validation. Never add this flag to ordinary setup or import.
master-schedule.json and canoa.json may point to a library used by an earlier release. They contain configuration, not recoverable rows.
Use the same helper for safe operations:
# Validate the complete file
python3 "${CLAUDE_PLUGIN_ROOT}/skills/master-schedule/scripts/csv-library.py" validate product
# Append values supplied as a JSON object keyed by schema column
python3 "${CLAUDE_PLUGIN_ROOT}/skills/master-schedule/scripts/csv-library.py" append product --row-json "/path/to/row.json"
# Update exactly one matched row with a partial JSON object
python3 "${CLAUDE_PLUGIN_ROOT}/skills/master-schedule/scripts/csv-library.py" update product --match-column "SKU" --match-value "ABC-123" --row-json "/path/to/changes.json"
All mutations validate the complete existing file before writing and atomically replace it from a temporary file in the same directory. A failed validation or mutation must leave the source unchanged.
Take alpacalabsllc/master-schedule from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.