{"_id":"@dyliu0306/courseape-win32-x64","_rev":"9-d8a354942fe133aec029b0047ff1555a","name":"@dyliu0306/courseape-win32-x64","dist-tags":{"latest":"1.0.2"},"versions":{"0.2.0":{"name":"@dyliu0306/courseape-win32-x64","version":"0.2.0","license":"PolyForm-Noncommercial-1.0.0","_id":"@dyliu0306/courseape-win32-x64@0.2.0","maintainers":[{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"}],"os":["win32"],"bin":{"courseape":"bin/courseape.exe"},"cpu":["x64"],"dist":{"shasum":"7ebf5f905b6e6f0a6a9462b9657d22ef0e4603ea","tarball":"https://registry.npmjs.org/@dyliu0306/courseape-win32-x64/-/courseape-win32-x64-0.2.0.tgz","fileCount":4,"integrity":"sha512-4kDO+PfxNLxRCBHcicu84hwc1xDNoVYWn1Z/D1isby6uP3PZdcQfstI0jws48X65vZFowfvHJCqFR6ZP0sBk4A==","signatures":[{"sig":"MEYCIQCG6SgYF/NvFua4Id5T4jeNstIxAuCxaAbOZluS9WKtdQIhAM8658S6JQvIyk2kcB7GO02ox9xyfTM40nLk6sD6QCru","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6119171},"gitHead":"1e83df05f132496f38e1cbcc374457464b74ce1b","_npmUser":{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"},"_npmVersion":"10.8.2","description":"CYCU course-planning CLI platform package","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/courseape-win32-x64_0.2.0_1784478013298_0.26707516895862504","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@dyliu0306/courseape-win32-x64","version":"0.2.1","license":"PolyForm-Noncommercial-1.0.0","_id":"@dyliu0306/courseape-win32-x64@0.2.1","maintainers":[{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"}],"os":["win32"],"bin":{"courseape":"bin/courseape.exe"},"cpu":["x64"],"dist":{"shasum":"d5e6e047bc10399ca1d1ef83002cc8112404c0da","tarball":"https://registry.npmjs.org/@dyliu0306/courseape-win32-x64/-/courseape-win32-x64-0.2.1.tgz","fileCount":4,"integrity":"sha512-BwrSsS/AmUVGVIrNDo4GGUvIM5U2qR6Fv2nLScrXLLvkhCrxwrMIJ0/DijC/ozK4AEYl6MDXl6JSX0wkwMw2rw==","signatures":[{"sig":"MEYCIQDnskTeQMOr0mpkY+OeuoSpNv/6enMpYSKTCUrH21/U/AIhAP8tOH+1aItDLOpu5v55DUmWGw+Iz0zlC01OfLFmS+RL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6119171},"gitHead":"f891bc749119ad59feba2be17ec6a32a8895ec2e","_npmUser":{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"},"_npmVersion":"10.8.2","description":"CYCU course-planning CLI platform package","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/courseape-win32-x64_0.2.1_1784478584905_0.206730236643776","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dyliu0306/courseape-win32-x64","version":"0.3.0","license":"PolyForm-Noncommercial-1.0.0","_id":"@dyliu0306/courseape-win32-x64@0.3.0","maintainers":[{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"}],"os":["win32"],"bin":{"courseape":"bin/courseape.exe"},"cpu":["x64"],"dist":{"shasum":"cc6f5c872c90e510e01ea113132b039e8c8b6688","tarball":"https://registry.npmjs.org/@dyliu0306/courseape-win32-x64/-/courseape-win32-x64-0.3.0.tgz","fileCount":4,"integrity":"sha512-EVZxljRTJYry4aE1icDRx49XAP1xfPt+B/n8B8BbTS48wANrvXQ++8PN3wcA72c/aONJNgWtNs3NwmgXVXDT/g==","signatures":[{"sig":"MEUCIArrgIemtJ1oVViEDpqIWd2Az2o18qGSPzfo7NY+FzPwAiEA35V1Ua+rIit85xVBT071ymmwemOiyPm974A/CtQmCBs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6132995},"gitHead":"ad8b06757189ec7fd0158450314ced6b6384d4da","_npmUser":{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"},"_npmVersion":"10.8.2","description":"CYCU course-planning CLI platform package","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/courseape-win32-x64_0.3.0_1784481451601_0.781615327113083","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@dyliu0306/courseape-win32-x64","version":"0.3.1","license":"PolyForm-Noncommercial-1.0.0","_id":"@dyliu0306/courseape-win32-x64@0.3.1","maintainers":[{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"}],"homepage":"https://github.com/dyliu0306/courseape#readme","bugs":{"url":"https://github.com/dyliu0306/courseape/issues"},"os":["win32"],"cpu":["x64"],"dist":{"shasum":"8a6c7e86668b9bdc4253cab0e0aba6be03e30725","tarball":"https://registry.npmjs.org/@dyliu0306/courseape-win32-x64/-/courseape-win32-x64-0.3.1.tgz","fileCount":4,"integrity":"sha512-BCowUMl7ZdqcwTbRtZSs3xJJCtDG6v7ysMAC/bw1aFLjiIQ7NZJTR9v4GWEx2efTYJYxP3PVMjsyryJr4Dnefw==","signatures":[{"sig":"MEQCIFT2Wqmw7XnATJYuanGn71FpDN/BpGLde219wD8shnZVAiAo5Uv6hYlMIHVfAjCB4ZaHs0yj1l6z8LVQ3biukoxRvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6245512},"_from":"file:dist/packages/dyliu0306-courseape-win32-x64-0.3.1.tgz","_npmUser":{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"},"_resolved":"/home/runner/work/courseape/courseape/dist/packages/dyliu0306-courseape-win32-x64-0.3.1.tgz","_integrity":"sha512-BCowUMl7ZdqcwTbRtZSs3xJJCtDG6v7ysMAC/bw1aFLjiIQ7NZJTR9v4GWEx2efTYJYxP3PVMjsyryJr4Dnefw==","repository":{"url":"git+https://github.com/dyliu0306/courseape.git","type":"git"},"_npmVersion":"10.8.2","description":"CYCU course-planning CLI platform package","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/courseape-win32-x64_0.3.1_1784533550343_0.3264767370794106","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@dyliu0306/courseape-win32-x64","version":"0.3.2","license":"PolyForm-Noncommercial-1.0.0","_id":"@dyliu0306/courseape-win32-x64@0.3.2","maintainers":[{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"}],"homepage":"https://github.com/dyliu0306/courseape#readme","bugs":{"url":"https://github.com/dyliu0306/courseape/issues"},"os":["win32"],"cpu":["x64"],"dist":{"shasum":"c29952c652d32d3cfa257ff3024f021dc9ad0b07","tarball":"https://registry.npmjs.org/@dyliu0306/courseape-win32-x64/-/courseape-win32-x64-0.3.2.tgz","fileCount":4,"integrity":"sha512-PJO4frjt+3tOWTXxzV5aRMddfzYgJ0kC7+35LFQ+DevlwDuYsClWIHVXvH6cXoBQTKAH982znnqYqzQlB4uGYA==","signatures":[{"sig":"MEUCIDz6PLK8Q151AOCxrncQCXlkibwz6ozZxbUYaq9JYkRgAiEAvVLEYcbAm5aV7AMeg6kz9QcD5rzcCL7gHm4mnkFiUzw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6246536},"_from":"file:dist/packages/dyliu0306-courseape-win32-x64-0.3.2.tgz","_npmUser":{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"},"_resolved":"/home/runner/work/courseape/courseape/dist/packages/dyliu0306-courseape-win32-x64-0.3.2.tgz","_integrity":"sha512-PJO4frjt+3tOWTXxzV5aRMddfzYgJ0kC7+35LFQ+DevlwDuYsClWIHVXvH6cXoBQTKAH982znnqYqzQlB4uGYA==","repository":{"url":"git+https://github.com/dyliu0306/courseape.git","type":"git"},"_npmVersion":"10.8.2","description":"CYCU course-planning CLI platform package","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/courseape-win32-x64_0.3.2_1784540977441_0.15469483463815026","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dyliu0306/courseape-win32-x64","version":"0.4.0","license":"PolyForm-Noncommercial-1.0.0","_id":"@dyliu0306/courseape-win32-x64@0.4.0","maintainers":[{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"}],"homepage":"https://github.com/dyliu0306/courseape#readme","bugs":{"url":"https://github.com/dyliu0306/courseape/issues"},"os":["win32"],"cpu":["x64"],"dist":{"shasum":"99a8b5b540e2e600daea92f6561954d159625f28","tarball":"https://registry.npmjs.org/@dyliu0306/courseape-win32-x64/-/courseape-win32-x64-0.4.0.tgz","fileCount":4,"integrity":"sha512-n2BZoG7StM4Kd+Ytw72T9tj7qi4JOVrEjTly8bJHx+WAfDMsA0rN0/2urEvcUfI8kn+88dSnfP0ke6yRNjzvTw==","signatures":[{"sig":"MEUCIAErVf/hy0bKv25aUQW9RHKsySuB69PDmNK3ndyNJDyLAiEA300SS4DZkqzbyLLKQhiOITf3FTvTt6Qfkhy8Lg61NG4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6302479},"_from":"file:dist/packages/dyliu0306-courseape-win32-x64-0.4.0.tgz","_npmUser":{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"},"_resolved":"/home/runner/work/courseape/courseape/dist/packages/dyliu0306-courseape-win32-x64-0.4.0.tgz","_integrity":"sha512-n2BZoG7StM4Kd+Ytw72T9tj7qi4JOVrEjTly8bJHx+WAfDMsA0rN0/2urEvcUfI8kn+88dSnfP0ke6yRNjzvTw==","repository":{"url":"git+https://github.com/dyliu0306/courseape.git","type":"git"},"_npmVersion":"10.8.2","description":"CYCU course-planning CLI platform package","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/courseape-win32-x64_0.4.0_1784545889609_0.5928941522776199","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@dyliu0306/courseape-win32-x64","version":"1.0.0","license":"PolyForm-Noncommercial-1.0.0","_id":"@dyliu0306/courseape-win32-x64@1.0.0","maintainers":[{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"}],"homepage":"https://github.com/dyliu0306/courseape#readme","bugs":{"url":"https://github.com/dyliu0306/courseape/issues"},"os":["win32"],"cpu":["x64"],"dist":{"shasum":"f927761dd326f6afd1bf94c164d268e8d9c4311d","tarball":"https://registry.npmjs.org/@dyliu0306/courseape-win32-x64/-/courseape-win32-x64-1.0.0.tgz","fileCount":4,"integrity":"sha512-fnL3TGUac7ADeOU1m2wpocvR2jClRe68IkRsUGA6NZWXKDs1JnbpHtmcy/cNgfzwx1+lzvsoXRC29tNex5/5bQ==","signatures":[{"sig":"MEQCIDkfv8JM3Z8kIa8xYE31qUQJs8Lo+cj1fNnYyx9/bqtoAiAhn8zhcUslviFuHi5pQ92y4YAErhjbpJhy80cS5S7Txg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6321094},"_from":"file:dist/packages/dyliu0306-courseape-win32-x64-1.0.0.tgz","_npmUser":{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"},"_resolved":"/home/runner/work/courseape/courseape/dist/packages/dyliu0306-courseape-win32-x64-1.0.0.tgz","_integrity":"sha512-fnL3TGUac7ADeOU1m2wpocvR2jClRe68IkRsUGA6NZWXKDs1JnbpHtmcy/cNgfzwx1+lzvsoXRC29tNex5/5bQ==","repository":{"url":"git+https://github.com/dyliu0306/courseape.git","type":"git"},"_npmVersion":"10.8.2","description":"CYCU course-planning CLI platform package","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/courseape-win32-x64_1.0.0_1784549749565_0.11736483454723068","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@dyliu0306/courseape-win32-x64","version":"1.0.1","license":"PolyForm-Noncommercial-1.0.0","_id":"@dyliu0306/courseape-win32-x64@1.0.1","maintainers":[{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"}],"homepage":"https://github.com/dyliu0306/courseape#readme","bugs":{"url":"https://github.com/dyliu0306/courseape/issues"},"os":["win32"],"cpu":["x64"],"dist":{"shasum":"51313f99ca7e2e52108634c213e580b217ebd3d6","tarball":"https://registry.npmjs.org/@dyliu0306/courseape-win32-x64/-/courseape-win32-x64-1.0.1.tgz","fileCount":4,"integrity":"sha512-069tfcBOa4q5XOrYaO0TCqd9pH9JBwbN5zrbwMDG7aC5oo5I17+ag+lvoE+Yfwo3pCKciKPW3OCVDPNpr7MGsg==","signatures":[{"sig":"MEUCIDqEoj46iG71U0jfFtdilGKtK31ElwkuJw8Fe6ESE19NAiEAlF3L5SdiGF1TRE0U37BLJiDv/M7jxgU4yrj3gUo1GX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7355715},"_from":"file:dist/packages/dyliu0306-courseape-win32-x64-1.0.1.tgz","_npmUser":{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"},"_resolved":"/home/runner/work/courseape/courseape/dist/packages/dyliu0306-courseape-win32-x64-1.0.1.tgz","_integrity":"sha512-069tfcBOa4q5XOrYaO0TCqd9pH9JBwbN5zrbwMDG7aC5oo5I17+ag+lvoE+Yfwo3pCKciKPW3OCVDPNpr7MGsg==","repository":{"url":"git+https://github.com/dyliu0306/courseape.git","type":"git"},"_npmVersion":"10.8.2","description":"CYCU course-planning CLI platform package","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/courseape-win32-x64_1.0.1_1784558201427_0.4817099229093731","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@dyliu0306/courseape-win32-x64","version":"1.0.2","description":"CYCU course-planning CLI platform package","os":["win32"],"cpu":["x64"],"repository":{"type":"git","url":"git+https://github.com/dyliu0306/courseape.git"},"homepage":"https://github.com/dyliu0306/courseape#readme","bugs":{"url":"https://github.com/dyliu0306/courseape/issues"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@dyliu0306/courseape-win32-x64@1.0.2","_integrity":"sha512-BOH5hNoxm6iL2qZWb0oGL08DiR/mxaq3xEvEKmL+W2uU0q1usm9LsV2uSHiNllH62GrKYDEx7AMIYrqNkeF06g==","_resolved":"/home/runner/work/courseape/courseape/dist/packages/dyliu0306-courseape-win32-x64-1.0.2.tgz","_from":"file:dist/packages/dyliu0306-courseape-win32-x64-1.0.2.tgz","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-BOH5hNoxm6iL2qZWb0oGL08DiR/mxaq3xEvEKmL+W2uU0q1usm9LsV2uSHiNllH62GrKYDEx7AMIYrqNkeF06g==","shasum":"46d0d6530a8e14de40c09611df199262ae1c0be0","tarball":"https://registry.npmjs.org/@dyliu0306/courseape-win32-x64/-/courseape-win32-x64-1.0.2.tgz","fileCount":4,"unpackedSize":7390766,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDkwPx8MKEzudwW7c8M3exWEA4Y9e/UAe/f2rRqDq+8zAIhAOl3nmLU9DJeASw1nrknx4uF8WRmrKqsrjmcutjLnY85"}]},"_npmUser":{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"},"directories":{},"maintainers":[{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/courseape-win32-x64_1.0.2_1784724599881_0.4080188983911437"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-19T16:20:13.166Z","modified":"2026-07-22T12:50:00.325Z","0.2.0":"2026-07-19T16:20:13.546Z","0.2.1":"2026-07-19T16:29:45.132Z","0.3.0":"2026-07-19T17:17:31.861Z","0.3.1":"2026-07-20T07:45:50.532Z","0.3.2":"2026-07-20T09:49:37.673Z","0.4.0":"2026-07-20T11:11:29.837Z","1.0.0":"2026-07-20T12:15:49.777Z","1.0.1":"2026-07-20T14:36:41.658Z","1.0.2":"2026-07-22T12:50:00.155Z"},"bugs":{"url":"https://github.com/dyliu0306/courseape/issues"},"license":"PolyForm-Noncommercial-1.0.0","homepage":"https://github.com/dyliu0306/courseape#readme","repository":{"type":"git","url":"git+https://github.com/dyliu0306/courseape.git"},"description":"CYCU course-planning CLI platform package","maintainers":[{"name":"dyliu0306","email":"spencerliu.0306@gmail.com"}],"readme":"# CourseApe — CYCU 選課規劃工具\r\n\r\n[![npm version](https://img.shields.io/npm/v/@dyliu0306/courseape)](https://www.npmjs.com/package/@dyliu0306/courseape)\r\n[![CI](https://github.com/dyliu0306/courseape/actions/workflows/ci.yml/badge.svg)](https://github.com/dyliu0306/courseape/actions/workflows/ci.yml)\r\n[![License: PolyForm NC 1.0.0](https://img.shields.io/badge/License-PolyForm--Noncommercial--1.0.0-blue)](LICENSE)\r\n\r\n> 給中原大學學生與 AI Agent 的選課輔助系統。用自然語言提問，Agent 幫你分析畢業門檻、規劃下學期、檢查衝堂。\r\n\r\n## 它能做什麼？\r\n\r\n- **畢業門檻分析** — 你還缺哪些課、哪些學分\r\n- **下學期規劃** — 自動匹配重修課程、推薦選課組合\r\n- **衝堂檢查** — 排好的課表有沒有時間衝突\r\n- **課程評價搜尋** — AI 搜尋公開網路上的課程心得\r\n\r\n## 安裝\r\n\r\n### 0. 由 Agent 自動安裝\r\n\r\n在 AI Agent（OpenCode、Codex、Claude Code 等）的對話中貼上：\r\n\r\n```\r\n幫我安裝 https://github.com/dyliu0306/courseape\r\n並告訴我怎麼登入？能用來做甚麼？\r\n```\r\n\r\nAgent 會自動完成 npm 安裝、Skill 安裝，並引導你使用。你仍須在cmd內自行登入一次。\r\n\r\n**選擇這個安裝方式的話，可以跳過以下步驟。**\r\n\r\n### 1. 安裝 CLI\r\n\r\n```\r\nnpm install -g @dyliu0306/courseape\r\ncourseape --version\r\n```\r\n\r\n> 需要 [Node.js](https://nodejs.org/) v18+。安裝時一路按「下一步」即可。\r\n>\r\n> **Windows 用戶**：安裝時可能觸發 Windows Defender SmartScreen，選「仍要執行」即可。\r\n\r\n如果 npm 不可用，也可以從 [GitHub Releases](https://github.com/dyliu0306/courseape/releases) 下載對應平台的 binary。Windows x64 使用 `courseape-win32-x64.exe`。\r\n\r\n### 2. 設定帳密\r\n\r\n首次使用前，設定 iTouch 帳密（二擇一）：\r\n\r\n```\r\ncourseape credentials set          # 互動式輸入，存入系統鑰匙圈\r\n```\r\n\r\n或設定環境變數：\r\n\r\n```\r\n$env:CYCU_USERNAME = \"你的學號\"\r\n$env:CYCU_PASSWORD = \"你的密碼\"\r\n```\r\n\r\n> 帳密存在系統鑰匙圈（Windows 認證管理員 / Mac 鑰匙圈），不出現在任何檔案。\r\n\r\n### 3. 安裝 Agent Skill\r\n\r\nCLI 安裝完成後，在你的 AI Agent 環境中執行：\r\n\r\n```\r\ncourseape skills install --all\r\n```\r\n\r\n或指定平台：\r\n\r\n```\r\ncourseape skills install claude\r\ncourseape skills install opencode\r\ncourseape skills install codex\r\n```\r\n\r\n## Quick Start\r\n\r\n安裝完成後，在 AI Agent 裡說：\r\n\r\n```\r\n幫我設定 CourseApe\r\n```\r\n\r\nAgent 會自動：\r\n1. 引導你完成一次安全登入（iTouch 帳密）\r\n2. 從學號推導你的入學年度\r\n3. 詢問確認你的系所（例如「你是資訊管理學系學士班嗎？」）\r\n4. 同步必要的基礎資料\r\n\r\n設定完成後，直接用自然語言提問：\r\n\r\n```\r\n我還缺什麼課才能畢業？\r\n下學期要選什麼課？\r\n幫我查資管系這學期的必修\r\n```\r\n\r\n## 使用範例\r\n\r\n| 你說 | Agent 做的事 |\r\n|------|-------------|\r\n| 「幫我分析畢業門檻」 | 讀取修業辦法 PDF + 成績，交叉比對，告訴你缺什麼 |\r\n| 「下學期要選什麼課」 | 分析缺修課程 → 查詢開課 → 排除衝堂 → 建議選課組合 |\r\n| 「有沒有衝堂」 | 檢查備選清單的時間衝突 |\r\n| 「這堂課好不好」 | 搜尋網路上的課程與教師評價 |\r\n| 「資管系有什麼課」 | 篩選並顯示該系開課清單 |\r\n\r\n## 它不會做什麼\r\n\r\n- **不會幫你選課** — 實際選課還是要到學校選課系統\r\n- **不會儲存你的密碼在檔案中** — 帳密存在系統鑰匙圈（Windows 認證管理員 / Mac 鑰匙圈）\r\n- **不會上傳你的成績** — 所有資料都在本機\r\n\r\n## 隱私\r\n\r\n| 項目 | 處理方式 |\r\n|------|----------|\r\n| 帳密 | 系統鑰匙圈，不出現在任何檔案 |\r\n| 成績 | 本機 SQLite 資料庫 |\r\n| AI 分析 | CLI 預設遮罩個資；若 Agent 將資料送給外部 AI，仍受該 Agent 服務的隱私政策約束 |\r\n| 網路 | CourseApe 連線至 CYCU iTouch、cmap；每 4 小時最多向 npm registry 查詢一次最新版本；npm 安裝／更新時亦會連線 |\r\n\r\n## 限制\r\n\r\n- 成績分析需要 AI Agent 讀取 PDF，準確度取決於 PDF 格式與 Agent 能力\r\n- 課程資料來自學校系統，非即時更新；開課資料 TTL 4 小時、系所清單 24 小時\r\n- 通識向度判斷依賴歷史開課資料的 `OP_TYPE` 欄位，部分課程可能缺失\r\n- 本工具為非官方開源專案，與中原大學無關\r\n\r\n## 快速驗證（新手 5 命令）\r\n\r\n```bash\r\ncourseape --version\r\ncourseape agent doctor\r\ncourseape init --department \"資管系\"\r\ncourseape agent prepare graduation\r\ncourseape agent prepare planning\r\n```\r\n\r\n## 疑難排解\r\n\r\n| 問題 | 解法 |\r\n|------|------|\r\n| 首次登入報錯 | 先執行 `courseape credentials set` 設定帳密 |\r\n| 登入失敗 | `courseape credentials set` 重新設定帳密，或設定環境變數 `CYCU_USERNAME` / `CYCU_PASSWORD` |\r\n| Session 過期 | `courseape login` 重新登入 |\r\n| 系所找不到 | `courseape agent resolve \"你的系所\"` 查看候選清單 |\r\n| 開課資料過舊 | `courseape courses offerings --term 1151` 重新同步 |\r\n| PDF 驗證失敗 | `courseape data purge` 清除快取後重跑 `prepare graduation` |\r\n| Skill 安裝後 Agent 找不到 | 確認 `courseape skills install <平台>` 的平台名稱正確 |\r\n| 版本不一致 | `npm install -g @dyliu0306/courseape@latest` 重新安裝 |\r\n\r\n## 授權\r\n\r\n[PolyForm Noncommercial License 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0) — 僅限非商業用途。\r\n\r\n## 進階使用\r\n\r\n- [CLI 完整參考](https://github.com/dyliu0306/courseape/blob/master/docs/cli-reference.md) — 所有低階命令與篩選條件\r\n- [Agent 指南](https://github.com/dyliu0306/courseape/blob/master/docs/agent-guide.md) — Agent 支援範圍與故障排除\r\n- [隱私政策](https://github.com/dyliu0306/courseape/blob/master/docs/privacy.md) — 帳密、session、成績與 Agent 資料邊界\r\n- [開發指南](https://github.com/dyliu0306/courseape/blob/master/CONTRIBUTING.md) — 建置、測試、發布流程\r\n\r\n## 更新\r\n\r\nCourseApe 每 4 小時最多向 npm 檢查一次最新版；若有新版本，會在 stderr 顯示更新提示，不影響命令輸出或 Agent JSON。\r\n\r\n```bash\r\nnpm update -g @dyliu0306/courseape\r\ncourseape --version\r\n```\r\n\r\n更新後若出現 platform package 錯誤，重新安裝：\r\n\r\n```bash\r\nnpm install -g @dyliu0306/courseape\r\n```\r\n","readmeFilename":"README.md"}