← ClaudeAtlas

canvas-awkward-syntaxlisted

Use when a short local academic draft needs role-aware syntax diversification while preserving meaning, locks, source grounding, rubric-critical openings, and document structure. Produce a reviewable local variant and never submit.
X-isdoingreat/canvas-pilot · ★ 109 · AI & Automation · score 78
Install: claude install-skill X-isdoingreat/canvas-pilot
# canvas-awkward-syntax Create one direct structural rewrite per eligible sentence. This is a bounded humanizing pass for short drafts, not permission to degrade rubric-critical language or fabricate content. ## Inputs and boundaries Require: - `draft_path`, `output_path`, and `voice_register`; - `course_id`, `assignment_id`, and stable assignment `work_dir`; - assignment spec/rubric anchors and optional hard locks; - optional role overrides for ambiguous sentences. Require `work_dir` to end in `course-<course_id>__assignment-<assignment_id>`. Keep the original and write `awkward_log.json` beside the output. Validate the path against `src.course_artifacts.stable_work_dir` before writing. This skill reads and writes local files only. It never calls Canvas or another learning platform, never writes assignment `result.json`, and never declares a submission ready. ## Required helpers Use the existing symbols: ```python from src.humanizer_segmentation import split_sentences from src.humanizer_segment_extract import extract_locks from src.awkward_transformation_assigner import ( ROLE_ALLOWLIST, assign_transformations, contains_banned, validate_transformation, write_assignment_report, ) ``` Do not duplicate the role allowlist or balancing solver in prose code. ## Stage 1: segment, lock, and infer roles Split before masking. Preserve `(doc_paragraph_index, intra_para_index)` as the canonical segment identity. Treat short metadata/title/name paragraphs