.cursor/skills/nazim-exams/SKILL.md
Exams module patterns for Nazim. Use when working on exams, exam classes, subjects, timetable, enrollment, marks, attendance, or reports. Covers class_subjects dependency, hooks, exam flow, academic year, exam types, permissions.
npx skillsauth add AHMADJAN-New/nazim-web nazim-examsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Exams are scoped to an academic year. Exam subjects come from class_subjects (not subjects directly). See nazim-class-subjects for the two-step subject workflow.
class_subject_id — subjects must be assigned to the class academic year (via class_subjects) before enrolling in an examuseEnrollSubjectToExam expects exam_id, exam_class_id, class_subject_id, and optional total_marks, passing_marks, scheduled_atsubjects table directly; always use class_subjectsdraft | scheduled | in_progress | completed | archiveduseAssignClassToExam, exam_classes with class_academic_year_id)useEnrollSubjectToExam, class_subject_id)useExams(organizationId?), useLatestExamFromCurrentYear(organizationId?), useExam(examId?), useCreateExam, useUpdateExam, useUpdateExamStatus, useDeleteExamuseExamClasses(examId?), useAssignClassToExam, useRemoveClassFromExamuseExamSubjects(examId?, examClassId?), useEnrollSubjectToExam, useUpdateExamSubject, useRemoveExamSubjectuseExamTimes(examId?, examClassId?), useCreateExamTime, useUpdateExamTime, useDeleteExamTimeuseExamStudents, useExamResults, useExamAttendance, and related report/attendance hooksQuery keys include profile?.organization_id, profile?.default_school_id. Use useCurrentAcademicYear when scoping to current year.
academicYearId); use useCurrentAcademicYear for “current year” filtersuseExamTypesexams.read, exams.create, exams.update, exams.delete — use for menu visibility and backend checksuseHasPermission('exams.read') etc. in main app (not platform admin)organization_id and default_school_id where applicabletools
Toast notifications for Nazim. Use when showing success/error/info messages. ALWAYS use showToast from @/lib/toast with translation keys; never toast from sonner directly. RTL positioning is automatic.
tools
Enforces status badge patterns for Nazim UI. Use when displaying status in tables, cards, or dialogs. Covers Badge variants, semantic colors, statusBadgeVariant, statusOptions with color.
development
Enforces mobile-first responsive patterns for Nazim UI. Use when building pages, tables, forms, charts, or buttons. Covers page container, FilterPanel, tabs, grids, tables, charts, cards, buttons.
development
PDF and Excel report generation for Nazim. Use when adding or changing reports. Backend uses ReportService and ReportConfig; frontend uses useServerReport. Covers branding, DateConversionService, RTL, acceptance criteria.