canvas-essaylisted
Install: claude install-skill X-isdoingreat/canvas-pilot
# canvas-essay
Produce one verified long-form academic draft. The real specification may live
in Canvas modules, attached files, or an instructor site; the Canvas summary is
only a routing hint.
## Contract
Require `course_id`, `assignment_id`, current assignment snapshot, approved
plan item, and `run_dir` from `canvas-execute`. The work directory is exactly:
```python
from src.course_artifacts import ensure_stable_work_dir
work_dir = ensure_stable_work_dir(run_dir, course_id, assignment_id)
```
Its name is `course-<course_id>__assignment-<assignment_id>`. Never use a
course or assignment title as durable identity.
This skill performs read-only Canvas discovery and local file creation. It
never uploads or submits. An overlay flag, plan approval, or prose instruction
is not mutation authority. A later exact-target command may enter only through
`canvas-submit`, which issues and validates an
origin/course/assignment/action/session-exact signed receipt.
Write one `result.json` through `src.course_artifacts.write_course_result`:
- `draft_ready`: verified draft exists;
- `skipped`: intrinsically manual assignment;
- `error`: required spec/source is missing or verification remains failed.
Do not use noncanonical result statuses.
## Route check
Confirm `src.ac_eng_router.route_ac_eng_assignment(...) == "essay"` unless the
approved plan contains an explicit essay override. Route short annotations and
worksheets to `canvas-reading-annotation`; route quizzes, code work, and