canvas-scanlisted
Install: claude install-skill X-isdoingreat/canvas-pilot
# Canvas Scan
Scan is proposal only. It reads current Canvas state, creates a reviewable plan,
and stops. The next user message is the architectural approval boundary.
## Hard boundary
- MUST NOT execute or draft an assignment.
- MUST NOT dispatch a course skill or `canvas-execute`.
- MUST NOT write a per-assignment `result.json` or `REPORT.md`.
- MUST NOT create `.scan_in_progress`.
- MUST NOT upload, submit, or start/answer/complete a quiz.
- MUST NOT interpret authentication as work approval.
- MUST stop after rendering the plan. Never “helpfully” begin an urgent item.
## Phase 0: Setup and route gate
Read local setup state before touching Canvas.
1. If `.env` is missing or the Canvas host/auth configuration is incomplete,
hand off to `canvas-setup` and stop this scan when setup returns.
2. Read `courses.yaml`. Treat missing `routes`, `routes: null`, an empty mapping,
and effectively all-commented routes as empty.
3. If routes are empty, hand off to `canvas-skill-opportunity` with this intent:
> Inspect recurring candidates read-only, inspect representative real specs
> and safe feedback-policy evidence, make a qualitative recommendation,
> write the private opportunity report, and stop for the student's numbered
> choice.
Stop when opportunity analysis returns. Do not scan assignments and do not
call `canvas-bootstrap` in the same turn. The student first chooses a
candidate; a later Bootstrap invocation verifies it and creates one route.