canvas-genericlisted
Install: claude install-skill X-isdoingreat/canvas-pilot
# canvas-generic
Produce a grounded draft for one approved assignment whose route is
`canvas-generic`. This is a runtime-designed fallback, not a shortcut around a
specialized course skill.
## Contract
Require these inputs from `canvas-execute`:
- `course_id`, `assignment_id`, and the assignment snapshot from the current
`assignments.json`;
- an approved current plan item;
- `run_dir`, normally `runs/YYYY-MM-DD`;
- the exact work directory returned by
`src.course_artifacts.stable_work_dir(run_dir, course_id, assignment_id)`.
The directory must be named
`course-<course_id>__assignment-<assignment_id>`. Do not use course or
assignment names as filesystem identity.
Write exactly one canonical `result.json` through
`src.course_artifacts.write_course_result`:
- `draft_ready` with an existing `draft_path` after all executable checks pass;
- `skipped` only for an intrinsically manual or unsupported assignment;
- `error` when required inputs remain unavailable or checks still fail after
their retry limit.
This skill is draft-only. Never call Canvas `POST`/`PUT`, upload, submit, start
a quiz, or complete a quiz. Execution approval is not mutation authority. A
later submission workflow must independently validate a signed, target-exact
receipt with `src.authorization.validate_authorization_receipt`.
## Stop and route elsewhere
Do not use this fallback when the shape is already supported:
- code project → `canvas-ics33`;
- Classic Quiz → `canvas-inside`;
- long essay →