학습 팩 (Study Pack)
하나의 강의를 위한 네 개의 연결된 페이지로, 항상 키트 (kit/, github.com/CAFEERON21br18/claude-skills 내 study-pack/kit 폴더)로 빌드됩니다.
- 실라보 (Sílabo): 번호가 매겨진 주제, 필수 핵심 사항.
- 레주모 (Resumo): 전체 강의, 완전한 설명, 주제당 ≥ 3개의 풀이된 예제.
- 레비장 (Revisão): 짧은 수업 + 연습 문제 (사용자 또는 Claude 제공), 채점, 기록, 노트, 튜터.
- 플라누 (Plano) (선택 사항): 시험까지의 날짜별 계획, 차트, 체크 표시.
규칙 제로: 키트가 디자인을 결정하며, 당신은 내용만 작성합니다
- 모든 페이지는
kit/build.py에서 생성됩니다. 페이지 HTML, CSS 또는 JS를 수동으로 작성하거나 패치하지 말고, 레이아웃을 "개선"하지 말며, 페이지별 스타일을 추가하지 마십시오. 동일한 옵션 ⇒ 동일한 페이지가 생성되며, 강의(CDI, AL, LP…)에 관계없이 동일합니다. - 오직
kit/SCHEMA.md에 설명된 JSON만 작성(json.dump사용)한 후, 빌드, 확인, 게시하십시오. - 질문은 항상
kit/questions.py의 양식, 순서, 형식을 따릅니다. 절대 다른 방식으로 표현, 순서 변경, 분할하거나 질문하지 마십시오. 테마 이름을 색상 없이 나열하지 마십시오. - 키트로 수행할 수 없는 작업이 있다면 최종 메시지에서 한 줄로 알리십시오. HTML로 해결하지 마십시오.
키트가 고정하는 사항(재구현하지 마십시오): 헤더(CDI 레이아웃: 왼쪽에 강의 라인 + 제목, 오른쪽에 4개의 팩 탭, 두 번째 행에 도구: 카운트다운 · 페이지 도구 · As minhas notas · ruben-bonanni-ribeiro.dev의 해/달 아이콘이 있는 라이트/다크 버튼), 주제 레일, 임베디드 폰트가 포함된 KaTeX, 넓은 수학 수식 맞춤, 노트, 튜터 채팅, 그래프 계산기, 집중 모드, 역일 기준 카운트다운, 동일 탭 링크, 전화 레이아웃, 저장소.
페이지별 도구 (고정 순서, 꺼진 옵션은 단순히 표시되지 않음):
| 페이지 | 헤더 도구 | 헤더 아래 스트립 |
|---|---|---|
| 실라보 | 카운트다운 · 집중(Foco) · 내 노트(As minhas notas) · ☾/☀ | — |
| 레주모 | 카운트다운 · 계산기 · 집중 · 내 노트 · ☾/☀ | — |
| 레비장 | 카운트다운 · 계산기 · 집중 · 오답만(Só erradas) · 기록(Histórico) · 내 노트 · ☾/☀ | 완료(done) / 정답(right) / 검토(to review) + 저장(saved) |
| 플라누 | 카운트다운 · 오늘(Hoje) · 완료 숨기기(Esconder feitas) · ☾/☀ | 완료된 세션 + 시간 |
0단계 — 키트, 그리고 팩이 이미 존재합니까?
- 키트를 매번 가져옵니다(변경되었을 수 있음):
git clone --depth 1 https://github.com/CAFEERON21br18/claude-skills /tmp/sp && cp -r /tmp/sp/study-pack/kit ./kitkit/SCHEMA.md를 읽습니다. - 사용자의 아티팩트를 나열하고(
Artifact목록, 범위 "all", 제한 200) "실라보/Syllabus/Programa — ", "레주모 — ", "레비장/Revision — ", "플라노 — " 또는 유사한 이름을 찾습니다. - 발견 → 한 번 물어봅니다: "Já existe um pacote de . Atualizo esse ou crio um novo?" (기존 항목 업데이트(권장) · 새로 만들기). 업데이트 선택 시: "O que muda?" (새 자료 통합 · 옵션 변경 · 누락된 페이지 추가 · 연습 문제 다시 만들기). 이름 모호함 → 가장 가까운 일치 항목과 함께 한 번 물어보고, "Nenhum, começar do zero" (없음, 처음부터 시작)를 제공합니다. 발견되지 않음 → 조용히 진행합니다.
업데이트 모드
- 각 기존 페이지를 전체
Artifactaction:"read"로path없이 지금 0단계에서 읽습니다. 게시는 전체 라이브 버전을 읽지 않으면 거부됩니다. 큰 페이지는 저장된 파일로 반환됩니다: 해당 파일을 약 150~200줄 단위로 끝까지 읽습니다. 그런 다음 각 페이지의 HTML(read에path:"index.html"사용)도extract.py를 위해 저장합니다. python3 kit/extract.py pack <saved pages…>는 키트 페이지에서pack/(pack.json, topics, plan.json)을 재구축합니다.slug,storage,urls, 주제 번호 및 연습 문제 ID를 그대로 유지합니다.- 이전 팩(키트 데이터 없음): 페이지에서 설정(테마, 글꼴, 언어, 기능, 개수)을 추론하고
pack.json을 작성합니다. 진행 상황이 유지되도록 저장소 키를"storage"에 복사합니다: localStorage 키(예:cdi-revisao-v1,lp-revision-v2)를storage.ls.revisao에, db 문서 이름(예:revisao,lp-revision-v2)을storage.docs.revisao에, 플라누와 테마 접두사도 동일하게 저장합니다. - 연습 문제: 동일한 문제(동일한 시트 + 번호)는 ID를 유지합니다. 새 문제는 다음 번호를 받습니다. 제거된 문제에 대한 시도는 "Exercício da versão anterior" (이전 버전의 연습 문제)로 표시됩니다: 최종 메시지에 그렇게 알립니다.
- 플라누 유지: 날짜가 지정된 세션을 절대 이동하지 마십시오(체크 표시는 날짜 + 색인으로 키가 지정됨). 텍스트, 개수 및 링크만 업데이트합니다. 처음부터 다시 빌드된 계획은 이전 체크 표시를 잃습니다: 최종 메시지에 그렇게 알립니다.
- 사용자가 변경하려는 질문과 새로운 자료에서 발생하는 질문(예: 사용자가 이제 연습 문제를 업로드한 경우 소스)만 묻습니다. 나머지는 모두
pack.json에서 재사용합니다. - 각 페이지의 기존
url에 게시합니다. 페이지별로 변경된 사항을 마무리합니다.
1단계 — 자료 수집 (질문 전)
- 출처: 이름이 지정되거나 링크된 Notion 페이지(각각 가져오고, 강의의 하위 페이지를 따라감), 업로드된 파일(PDF, docx, 슬라이드, 이미지, 전체 읽기), 붙여넣은 텍스트. 강의 이름이 지정되었지만 출처가 없는 경우 → Notion을 검색하고, 한 줄로 페이지를 확인합니다.
- Notion에서 "lesson-style" 과 같은 이름의 페이지를 검색합니다(사용자 고유의 연습 문제 형식). 찾으면 읽습니다: 이것이 첫 번째 연습 문제 형식 옵션이 됩니다.
- 모든 주제, 정의, 정리, 방법, 함정, 풀이된 예제, 출처(시트 + 번호)가 있는 연습 문제, 시험 날짜, 사용자 고유의 연습 문제에 대해: 주제, 난이도, 방법, 해결(전체 / 부분 / 답변만 / 없음)을 수집합니다.
- 명제 누락(답변만 있는 시트): 질문 전에 지금 한 줄로 알리고 PDF를 요청합니다. 절대 명제를 만들어내지 마십시오. 사용자의 다른 페이지 또는 답변 표에서 재구성된 명제는
"reconstructed": true("enunciado reconstituído")를 받습니다. - Notion의 교과서: 주제 블록(예: 1–3, 4–8, 9–11)당 하나의 하위 에이전트로 추출하고 병렬로 처리합니다. 각 에이전트는 주제별로 JSON을 반환합니다: 교과서 번호가 있는 정의 및 정리, 함정, ≥ 4개의 단계(무엇 + 이유)와 최종 답변이 있는 풀이된 예제; 각각은 sympy로 모든 숫자를 다시 계산하고, 조용히 수정하는 대신 교과서 오류를 플래그 지정합니다 →
bookerr블록 ("Gralha no livro" (교과서 오류)). - 마스터 주제 목록: 강의 순서대로 1, 2, 3…으로 번호를 매기고, 절대 문자를 사용하지 마십시오. 이후에 절대 번호를 다시 매기지 마십시오.
- 계산 위주 강의(수학, 물리학, 통계학, 공학, 금융) → 계산기 질문이 표시됩니다.
- 읽을 수 없는 출처 → 어떤 것인지 알리고 계속 진행합니다.
2단계 — 질문 (하나의 고정된 양식)
python3 kit/questions.py --lang <pt|fr|en> [--mine] [--calc] [--lesson-style] [--exam YYYY-MM-DD](--mine: 사용자가 자신의 연습 문제를 업로드한 경우,--calc: 계산 위주 강의인 경우,--lesson-style: 해당 Notion 페이지가 존재하는 경우,--exam: 날짜가 발견된 경우.)- 비주얼라이저
read_me(모듈elicitation)를 호출한 다음,show_widget을 정확히 출력된 HTML, 제목study_pack_details와 함께 호출합니다. 위젯에 다른 것은 없고, 추가 질문도 없습니다. - 답변은 한 줄로 반환됩니다 (
Theme: … · Font: … · Features: … · Exercise format: … · Source: … · Per topic: … · Language: … · Graph calc: … · Tutor: … · Plan: … · Deadline: … · Hours: …).pack.json에 매핑합니다. - 이 세션에 비주얼라이저가 없는 경우 →
questions.py … --text의 출력을 그대로 보내고(각 테마와 해당 16진수 색상을 표시함) 번호가 매겨진 답변을 기다립니다. 다른 형식은 절대 사용하지 마십시오. - 건너뛰거나 응답하지 않은 경우(무인 실행) → 기본값: 포커스 테마, Atkinson Hyperlegible, 사이드바 + 집중 + 기록 + 진행 + 카운트다운, lesson-style이 발견되면 해당 형식, 그렇지 않으면 객관식 + 자유 답변, 사용자가 연습 문제를 가지고 있으면 50/50, 그렇지 않으면 강의 자료, 주제당 5개, 대화 언어, 계산기(계산 위주인 경우), 튜터(예), 플라누(없음). 사용된 기본값을 알립니다.
그런 다음, 빌드 전에:
- **출처 = 내 것만(mine only)**이고 일부 주제에 사용자의 연습 문제가 없는 경우 → 지금 해당 주제를 말하고 한 번 묻습니다: 연습 문제 없이 두기(공지 포함) 또는 해당 주제만 강의/Claude 연습 문제로 채우기.
- "기타(Other)" 테마 →
kit/themes.json에서 가장 가까운 사전 설정을 복사하고, 색상만 변경한 후,python3 kit/check_contrast.py <file>을 통과할 때까지 실행하고, 객체를pack.jsontheme에 넣습니다. - 형식 → 연습 문제 유형: lesson-style = 해당 규칙(아래); 출처대로(Como na fonte) = 시트의 형식 유지(개방형 질문 →
free; 객관식/참-거짓은 시트에 있는 경우에만); 객관식(Escolha múltipla) =mcq; 자유 답변(Resposta livre) =free; V/F =tf. (빈칸 채우기는 키트에 없습니다.)
3단계 — 내용 작성 (JSON만)
주제를 그룹으로 나누고 최대 4개의 하위 에이전트로 병렬로 작성합니다(예: 1–3, 4–6, 7–9, 10–11). 각 에이전트에 제공: kit/SCHEMA.md, 주제의 자료, 2단계의 답변, 그리고 다음 규칙. 각 에이전트는 Python 스크립트(json.dump, 수동 금지)를 사용하여 pack/topics/<n>.json을 작성하고 sympy로 모든 계산을 확인합니다. 그런 다음 파일을 읽고 규칙을 따르는지 확인합니다.
실라보 (syllabus): 주제당 2–6개의 글머리 기호, ≤ 12단어, 명사구/규칙/공식, 문장 없음, 불필요한 내용 없음. 시험 관련 규칙만 포함하고, 지어낸 내용은 없습니다.
레주모 (resumo + examples): 주제의 모든 정의, 정리, 규칙 및 방법을 완전히 설명합니다(직관 → 공식 진술 → 사용 시기 및 방법), 강의 표기법 사용; def / thm / formula / method / trap 블록. 주제당 ≥ 3개의 풀이된 예제, 간단한 수준부터 시험 수준까지, 다양한 방법: 해결 방법이 있는 사용자의 연습 문제를 먼저, 그 다음 강의 예제, 그 다음 새로운 예제. 각 단계에는 do + why (+ 학생들이 실수하는 trap)가 있습니다. 출처 레이블: 실제 출처, 또는 "new" → "Novo" (새로운 예제). 지어낸 예제를 강의 출처로 레이블하지 마십시오. 객관식 문제를 예제로 재사용할 때는 솔루션 단계만 유지하고 옵션에 대한 문장은 삭제합니다.
레비장 (lesson, worked, exercises): 짧은 수업 블록, 하나의 worked 예제, 그 다음 연습 문제.
연습 문제 선택:
- 내 것만, 모두: 해당 주제 아래의 모든 사용자 연습 문제, 추가 없음; 연습 문제가 없는 주제는 공지를 받음. 내 것만, N개: 주제당 가장 좋은 N개 — 시험 관련성이 가장 높은 순, 그 다음 다양성(각 방법 한 번씩, 쉬움 → 시험 수준, 동일한 것을 동일한 방식으로 테스트하는 두 문제 없음); N개 미만이면 모두 +
shortage공지. - 50/50, 모두: 모든 사용자 연습 문제 + Claude가 제공하는 같은 수의 문제, 사용자의 문제가 가장 적게 다루는 부분을 대상으로 함. 50/50, N개: 사용자 문제의 절반(위와 같이 선택, 반올림), 동일한 스타일의 Claude 문제 절반.
- 강의 자료(Yours): 강의 연습 문제를 먼저, 그 다음 동일한 스타일의 새로운 문제.
사용자가 제공한 해결 방법: 이것이 답안 키입니다 — 단계와 표기법을 유지하고, 각 단계를 설명합니다(무엇, 이유, 함정). 누락된 단계는 완성하고 by_claude: true를 표시합니다. 모든 해결 방법을 확인하고(sympy로 다시 계산), 잘못된 단계는 조용히 수정하지 않습니다: flag와 함께 텍스트 및 수정 사항을 표시합니다. 해결 방법이 없으면 직접 작성하고 검증합니다.
lesson-style 규칙 (선택된 경우; Notion 페이지가 더 많은 정보를 제공하면 우선): 정확히 4개의 옵션(A–D)이 있는 mcq; 계산 문제 gate: true ("Resolve no papel primeiro" (먼저 종이에 풀기) + "Já resolvi — mostrar opções" (풀었음 — 옵션 표시)) 및 free_too: true (작업 내용 또는 사진 붙여넣기, Claude가 채점); 수학 옵션은 한 줄에 하나씩(기본 레이아웃), 각각 단일 행; 모든 오답은 일반적인 실수이며 why가 이를 명명합니다; 정답 문자는 다양함(같은 문자가 두 번 이상 연속으로 나타나지 않음).
텍스트: **bold**, 이탤릭체는 사용 금지; 수학은 $…$ / $$…$$; 회상 링크는 [[n]] (회상 기능 켜져 있을 때).
4단계 — 계획 (플라누 = 예인 경우에만)
설정을 pack.json → plan에 넣습니다(시작 = 오늘, hours: "auto" 또는 숫자, 다른 시험과 메모가 있는 busy 일, 어려운 주제에 대한 weights, 팩 언어로 된 hours_note). 그런 다음 python3 kit/plan.py pack을 실행합니다. 시간이 부족할 때 잘라내야 했던 항목을 출력합니다: 최종 메시지에 알립니다.
5단계 — 빌드, 확인, 게시
python3 kit/build.py pack --out pack/out(스키마 오류 시 중지: JSON을 수정하고, HTML은 수정하지 마십시오).python3 kit/check.py pack/out --shots는 ALL CHECKS PASSED를 출력해야 합니다(400 / 1440px 라이트 및 다크 모드에서 페이지 오버플로우 없음, 잘린 내용 없음, KaTeX 오류 0개, 원시$없음, JS 오류 없음, 고정된 헤더 및 도구 순서, 새 탭 링크 없음, 상호 작용 작동 확인). 그런 다음pack/out/shots/*를 확인합니다(헤더, 밀집된 수학 블록, 전화 다크 모드). JSON을 수정하고, 다시 빌드하고, 한 번 더 확인합니다.artifact-capabilities를 로드하고 페이지가 사용하는 기능을 선언합니다: 계정 저장소(db) 및 뷰어 ID(user)는 노트, 기록 및 체크 표시용; Claude 호출(sample)은 튜터 및 채점용(실라보, 레주모, 레비장). 플라누:db+user만.- 새 팩: 4개의 파일을 게시하고(제목은 페이지에서 가져오고, 아이콘 "book"), 4개의 URL을
pack.json→urls에 넣고, 다시 빌드하고, 다시 확인하고, 각 페이지를 해당 URL에 다시 게시합니다(탭과 교차 링크에 URL이 필요함). 업데이트: URL이 이미pack.json에 있습니다. 각 페이지를 해당url에 게시합니다.
마무리
몇 줄만: 빌드 또는 업데이트된 내용(카드가 링크를 전달함), 자료에서 누락된 사항, 사용자/강의/Claude가 작성한 연습 문제, 오답으로 플래그 지정된 사용자의 해결 방법 목록(연습 문제 + 단계), 계획에서 잘라내야 했던 항목, 활성화할 수 없었던 항목(튜터, 계정 저장소). 수식이 LaTeX로 복사된다고 한 번 말합니다(선택 + 복사 또는 수식 더블 클릭). 단계 요약은 하지 않습니다.