Study Pack

Notionやアップロードされたファイルから講義資料を、統一されたリンク付き学習パック(Sílabo、Resumo、Revisão、オプションでPlano)に変換、または既存パックを更新します。すべてのコースで同じ外観と動作を実現する固定の質問フォームとページキットを使用します。

Study Pack とは?

このスキルは、大学の講義資料を構造化された学習パック(4ページ構成:シラバス、詳細ノート、復習&演習、学習計画)に変換するためのものです。ユーザーはNotionページやPDF、docx、スライド、画像などのファイルをアップロードするだけで、自動的にトピックごとに整理された教材が生成されます。各ページは`kit`フォルダ内のビルドツール(Pythonスクリプト)によって生成されるため、デザインや機能はすべてのコースで統一され、ユーザーはコンテンツの作成に集中できます。このスキルは主にClaude CodeやCodexのようなAIエージェント上で動作し、教材作成を効率化します。質問フォームとページキットは固定されており、すべてのコース(CDI、AL、LPなど)で同じ見た目と操作性を提供します。また、教材の更新モードもサポートしており、既存のパックに新しい資料を追加したり、設定を変更したりできます。演習問題の解答が間違っている場合にはフラグを立てて報告し、数式計算はsympyで検証するなど、教材の正確性を高める機能も備えています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CAFEERON21br18/claude-skills/tree/HEAD/study-pack

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Study Pack は何をしますか?

1つのコース向けの4つのリンクされたページ。常にkit(kit/(github.com/CAFEERON21br18/claude-skills、フォルダstudy-pack/kit))によって構築されます。

  1. Sílabo: 番号付きトピック、必要最低限の内容。
  2. Resumo: 完全な講義、詳細な説明、トピックごとに3つ以上の解いた例題。
  3. Revisão: 短いレッスン+演習(あなたの/ユーザーのもの)、採点、履歴、メモ、チューター。
  4. Plano(オプション): 試験までの日付付き計画、グラフ、チェックマーク。

ルール0: キットが見た目を決定し、あなたはコンテンツのみを書く

  • すべてのページはkit/build.pyから出力されます。ページのHTML、CSS、JSを手作業で書いたり修正したり、「レイアウトを改善」したり、ページ固有のスタイルを追加したりしてはいけません。同じオプション ⇒ コースが何であれ(CDI、AL、LP…)同じページになります。
  • あなたはkit/SCHEMA.mdに記述されたJSONのみを書き(Pythonのjson.dumpを使用)、その後ビルド、チェック、公開します。
  • 質問は常にkit/questions.pyのフォームを、その順序で、その形式で使用します。言い換えたり、順序を変えたり、分割したり、別の方法で尋ねたりしてはいけません。テーマ名を色なしでリストにしてはいけません。
  • キットでできないことがあれば、最後のメッセージに一言で述べてください。HTMLで回避しようとしないでください。

キットが代わりに固定してくれるもの(再実装しないこと):ヘッダー(CDIレイアウト:左側にコース行+タイトル、右側に4つのパックタブ、2行目にツール:カウントダウン · ページツール · As minhas notas · ruben-bonanni-ribeiro.devの太陽/月アイコンを使ったライト/ダークボタン)、トピックレール、埋め込みフォント付きKaTeX、ワイド数式対応、メモ、チューターチャット、グラフ計算機、フォーカスモード、暦日でのカウントダウン、同一タブリンク、電話レイアウト、ストレージ。

ページごとのツール(固定順序、オフのオプションは単に存在しない):

ページヘッダーツールヘッダー下のストリップ
Sílaboカウントダウン · フォーカス · As minhas notas · ☾/☀—
Resumoカウントダウン · 計算機 · フォーカス · As minhas notas · ☾/☀—
Revisãoカウントダウン · 計算機 · フォーカス · 間違いのみ · 履歴 · As minhas notas · ☾/☀完了 / 正解 / 復習用 + 保存済み
Planoカウントダウン · 今日 · 完了を隠す · ☾/☀セッション完了 + 時間

ステップ0 — キット、そしてパックは既に存在するか?

  1. 毎回キットを取得します(変更されている可能性があります): git clone --depth 1 https://github.com/CAFEERON21br18/claude-skills /tmp/sp && cp -r /tmp/sp/study-pack/kit ./kit kit/SCHEMA.mdを読んでください。
  2. ユーザーのアーティファクトをリストします(Artifactリスト、スコープ "all"、最大200件)。「Sílabo/Syllabus/Programa — 」、「Resumo — 」、「Revisão/Revision — 」、「Plano — 」または類似の名前を探します。
  3. 見つかった場合 → 一度だけ、平文で尋ねます:「Já existe um pacote de . Atualizo esse ou crio um novo?」(既存を更新(推奨) · 新規作成)。更新の場合:「何を変更しますか?」(新しい資料を追加 · オプションを変更 · 不足しているページを追加 · 演習をやり直す)。 名前があいまいな場合 → 最も近い一致と「なし、ゼロから始める」とともに、どれかを一度だけ尋ねます。見つからなかった場合 → 静かに続行します。

更新モード

  • 各既存ページを、今このステップ0で、Artifact action:"read" pathなしで完全に読み取ります。公開は、ライブバージョン全体が読み取られなければ拒否されます。大きなページは保存されたファイルとして返ってきます:そのファイルを約150〜200行ずつ最後まで読み取ります。次に、各ページのHTML(path:"index.html"でのread)もextract.pyのために保存します。
  • python3 kit/extract.py pack <保存されたページ…> pack/(pack.json、topics、plan.json)をキットページから再構築します。slug、storage、urls、トピック番号、演習IDはそのまま保持します。
  • 古いパック(キットデータなし):ページから設定(テーマ、フォント、言語、機能、数)を推測し、pack.jsonを書き込みます。そのストレージキーを"storage"にコピーして、進捗が維持されるようにします:localStorageキー(例:cdi-revisao-v1、lp-revision-v2)をstorage.ls.revisaoに、データベース文書名(例:revisao、lp-revision-v2)をstorage.docs.revisaoに、同様にplanoとテーマプレフィックスに対しても。
  • 演習:同じ演習(同じシート+番号)はそのIDを保持します。新しいものは次の番号を取ります。削除された演習の試行は「以前のバージョンの演習」として表示されます:最後にその旨を伝えます。
  • Planoが保持される場合:日付付きセッションを決して移動しないでください(チェックマークは日付+インデックスでキー設定されています)。テキスト、カウント、リンクのみを更新します。ゼロから再構築された計画は古いチェックマークを失います:最後にその旨を伝えます。
  • ユーザーが変更したい質問のみ、および新しい資料が生じる質問(例:新しい演習をアップロードした場合のソース)のみを尋ねます。その他はpack.jsonから再利用します。
  • 各ページの既存のurlに公開します。ページごとに変更内容を伝えて終了します。

ステップ1 — 資料を収集する(質問の前)

  • ソース:名前またはリンクされたNotionページ(それぞれを取得し、コースの子ページをたどる)、アップロードされたファイル(PDF、docx、スライド、画像をすべて読む)、貼り付けられたテキスト。コース名はあるがソースがない場合 → Notionを検索し、一行でページを確認します。
  • 「lesson-style」(ユーザー自身の演習形式)という名前のページをNotionで検索します。見つかった場合は読み取ります:それが最初の演習形式オプションになります。
  • すべてのトピック、定義、定理、メソッド、落とし穴、解いた例題、ソース(シート+番号)付きの演習、試験日、ユーザー自身の演習については:トピック、難易度、メソッド、解答(完全 / 部分的 / 解答のみ / なし)を収集します。
  • 問題文がない(解答のみのシート):質問の前に今すぐ一行でそれを伝え、PDFを要求します。問題文を決して創作してはいけません。ユーザーの別のページや解答表から再構築された問題文には、"reconstructed": true(「再構築された問題文」)を付けます。
  • Notion上の教科書:トピックのブロックごとに1つのサブエージェント(例:1–3、4–8、9–11)で並行して抽出します。各サブエージェントは、トピックごとにJSONを返します。定義と定理は教科書の番号付け、落とし穴、ステップ付きの4つ以上の解いた例題(何を+なぜ)と最終回答を含みます。各例題はすべての数値をsympyで再計算し、教科書のエラーを黙って修正せずにフラグを立てます→bookerrブロック(「教科書の誤り」)。
  • マスタートピックリスト:コース順に1、2、3…と番号付け、決して文字を使用しません。後で番号を振り直してはいけません。
  • 計算量の多いコース(数学、物理、統計、工学、金融)→ 計算機の質問が表示されます。
  • 読み取れないソース → どれかを伝え、続行します。

ステップ2 — 質問(1つの固定フォーム)

  1. python3 kit/questions.py --lang <pt|fr|en> [--mine] [--calc] [--lesson-style] [--exam YYYY-MM-DD] (--mine:ユーザーが自身の演習をアップロードした場合、--calc:計算量が多い場合、--lesson-style:そのNotionページが存在する場合、--exam:日付が見つかった場合。)
  2. ビジュアライザを呼び出しますread_me(モジュールelicitation)、次にshow_widgetを、出力されたHTMLをそのまま、タイトルstudy_pack_detailsで表示します。ウィジェットにはそれ以外は入れず、追加の質問もしません。
  3. 答えは1行で返ってきます(Theme: … · Font: … · Features: … · Exercise format: … · Source: … · Per topic: … · Language: … · Graph calc: … · Tutor: … · Plan: … · Deadline: … · Hours: …)。それをpack.jsonにマッピングします。
  4. このセッションにビジュアライザがない場合 → questions.py … --textの出力をそのまま送信し(各テーマを16進数カラーとともに表示)、番号付きの回答を待ちます。他の形式は決して使用しません。
  5. スキップされた、または回答がない場合(無人実行) → デフォルト値:フォーカステーマ、Atkinson Hyperlegible、サイドバー+フォーカス+履歴+進捗+カウントダウン、lesson-styleが見つかればそれ、なければ多肢選択+自由回答、ユーザーが演習を持っていれば50/50、なければあなたのもの、トピックあたり5問、会話言語、計算量が多ければ計算機あり、チューターあり、計画なし。どのデフォルトが使用されたかを伝えます。

その後、ビルドする前に:

  • ソース=マイオンリーで、いくつかのトピックにユーザーの演習が1つもない場合 → どのトピックかを今すぐ伝え、一度尋ねます:それらを演習なしのままにするか(その旨の通知付き)、またはそれらのトピックのみをコース/Claudeの演習で埋めるか。
  • 「その他」テーマ → kit/themes.json内の最も近いプリセットをコピーし、色のみを変更し、python3 kit/check_contrast.py <file>がパスするまで実行し、そのオブジェクトをpack.jsonのthemeに配置します。
  • フォーマット → 演習タイプ:lesson-style = そのルール(下記);Como na fonte = シートの形式を保持(自由記述問題 → free;シートにMCQ/真偽がある場合のみそれら);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でチェックします。その後、それらのファイルを読み取り、ルールに従っていることを確認します。

Sílabo(syllabus):トピックあたり2〜6個の箇条書き、12語以内、名詞句/ルール/数式、文は不可、水増しなし。試験に関連するすべてのルール、創作なし。

Resumo(resumo + examples):トピックのすべての定義、定理、ルール、メソッドを完全に説明(直感 → 形式的な記述 → いつどのように使うか)、コースの表記法;def / thm / formula / method / trapブロック。トピックごとに3つ以上の解いた例題、簡単 → 試験レベル、異なるメソッド:ユーザーの解答付き演習を最初に、次にコースの例題、最後に新しいもの。各ステップにはdo + why(+ 学生が間違える箇所にtrap)を含めます。出典ラベル:実際のソース、または"new" → 「新規」。創作例題にコースのソースを決して付けないでください。MCQを例題として再利用する場合、解答ステップのみを保持します:選択肢に関する文(「Aの入れ替え…」、「Bの選択肢…」、「CとD…」)は削除します。

Revisão(lesson、worked、exercises):短いレッスンブロック、1つのworked例題、次に演習。

演習の選択:

  • マイオンリー、すべて:各トピックの下にあるすべてのユーザー演習、追加なし。1つもないトピックにはその旨の通知。マイオンリー、N:トピックあたり最良のN個 — 最も試験に関連するものから順に、次に多様性(各メソッドを1回ずつ、簡単→試験レベル、同じことを同じ方法でテストするものは2つ以上なし)。N未満 → すべて + shortage通知。
  • 50/50、すべて:すべてのユーザー演習 + 同数のClaudeによる演習。ユーザーの演習が最もカバーしていないものを狙います。50/50、N:ユーザーの半分(上記のように選択、切り上げ)、Claudeの半分を同様のスタイルで。
  • あなたのもの:コースの演習を最初に、次に同じスタイルの新しいもの。

ユーザーから提供された解答:それらが解答鍵です — そのステップと表記法を保持し、各ステップを説明します(何を、なぜ、落とし穴)。欠落しているステップは補完し、by_claude: trueとマークします。すべての解答をチェックします(sympyで再計算)。間違ったステップは黙って修正せず、テキストと修正を添えてflagを立てます。解答がない場合:解答を書き、検証します。

lesson-styleルール(選択された場合。Notionページがより多くを述べていればそれが優先):正確に4つの選択肢A~Dを持つmcq。計算問題はgate: true(「まず紙で解く」+「解いた — 選択肢を表示」)およびfree_too: true(作業または写真を貼り付け、Claudeが採点)。数学の選択肢は1行に1つ(デフォルトレイアウト)、それぞれ単一行。間違った選択肢はすべて典型的なミスであり、そのwhyはそれを名指しします。正解の文字は変わります(同じ文字が2回以上連続しない)。

テキスト:**太字**、イタリックは使用しない。数式は$…$ / $$…$$。Recallがオンの場合、関連リンク[[n]]。

ステップ4 — 計画(Plano = yesの場合のみ)

設定をpack.json → planに配置します(開始=今日、hours: "auto" または数値、他の試験とそのメモがあるbusy日、重いトピックのweights、hours_noteはパック言語で)。その後、python3 kit/plan.py packを実行します。時間が足りない場合にカットする必要があったものを出力します:最終メッセージでそれを伝えます。

ステップ5 — ビルド、チェック、公開

  1. python3 kit/build.py pack --out pack/out(スキーマエラーで停止:JSONを修正し、HTMLは修正しない)。
  2. python3 kit/check.py pack/out --shots は ALL CHECKS PASSED を出力しなければなりません(400 / 1440 px ライト&ダークでページオーバーフローなし、クリップなし、KaTeXエラー0、生の$なし、JSエラーなし、固定ヘッダーとツール順、新しいタブリンクなし、インタラクションが動作)。次に、pack/out/shots/*(ヘッダー、密集した数式ブロック、電話ダーク)を見てください。JSONを修正し、再ビルドし、再度チェックします(1回のみ)。
  3. artifact-capabilitiesをロードし、ページが使用するものを宣言します:メモ、履歴、チェックマーク用のアカウントストレージ(db)とビューアーID(user);チューターと採点のためにClaudeに質問する(sample)(Sílabo、Resumo、Revisão)。Plano:db + userのみ。
  4. 新しいパック:4つのファイルを公開し(タイトルはページから、アイコンは"book")、4つのURLをpack.json → urlsに配置し、再ビルド、再チェック、それぞれのURLに再公開します(タブと相互リンクにURLが必要)。更新:URLは既にpack.jsonにあります。各ページをそのurlに公開します。

完了

数行のみ:何が構築または更新されたか(カードにリンクが含まれます)、資料から欠けているもの、ユーザー/コース/Claude作成の演習、ユーザーの解答が間違っているとフラグされたもののリスト(演習+ステップ)、計画でカットする必要があったもの、有効にできなかったもの(チューター、アカウントストレージ)。数式はLaTeXとしてコピーされること(選択+コピー、または数式をダブルクリック)を一度伝えます。ステップの要約はしません。

関連スキル