# ๆžถๆž„่ฎพ่ฎก ## ๐Ÿ›๏ธ ๆ•ดไฝ“ๆžถๆž„ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ็”จๆˆทไบคไบ’ๅฑ‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Hermesๅฏน่ฏ โ”‚ โ”‚ ๅ‘ฝไปค่กŒ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ไธšๅŠก้€ป่พ‘ๅฑ‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ 3ไธชHermes Skills โ”‚ โ”‚ ็‹ฌ็ซ‹Python่„šๆœฌ โ”‚ โ”‚ โ”‚ โ”‚ - advisor โ”‚ โ”‚ - visual-report โ”‚ โ”‚ โ”‚ โ”‚ - spec-checker โ”‚ โ”‚ - quick-3min โ”‚ โ”‚ โ”‚ โ”‚ - zhangxuefeng โ”‚ โ”‚ - collect-info โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ่ง„ๅˆ™ไธŽๆ•ฐๆฎๅฑ‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ provinces/ โ”‚ โ”‚ errors/ โ”‚ โ”‚ templates/ โ”‚ โ”‚ โ”‚ โ”‚ ็œไปฝ่ง„ๅˆ™ โ”‚ โ”‚ ้”™่ฏฏๆจกๅผ โ”‚ โ”‚ ๆŠฅๅ‘Šๆจกๆฟ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๆŒไน…ๅŒ–ๅฑ‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ docs/ โ”‚ โ”‚ data/ โ”‚ โ”‚ CHANGELOG.md โ”‚ โ”‚ โ”‚ โ”‚ ๆ–‡ๆกฃๆกˆไพ‹ โ”‚ โ”‚ ็คบไพ‹ๆ•ฐๆฎ โ”‚ โ”‚ ๅ˜ๆ›ดๅކๅฒ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ## ๐ŸŽฏ ่ฎพ่ฎกๅŽŸๅˆ™ ### 1. ๅ…ณๆณจ็‚นๅˆ†็ฆป๏ผˆSeparation of Concerns๏ผ‰ - **Skills**๏ผš่ดŸ่ดฃๅฏน่ฏๅผไบคไบ’ - **่„šๆœฌ**๏ผš่ดŸ่ดฃๆ‰นๅค„็†ๅ’Œๆ•ฐๆฎๅค„็† - **่ง„ๅˆ™**๏ผš่ดŸ่ดฃไธšๅŠก่ง„ๅˆ™้›†ไธญ็ฎก็† - **ๆ•ฐๆฎ**๏ผš่ดŸ่ดฃๆŒไน…ๅŒ– ### 2. ๅ•็‚น็œŸ็›ธ๏ผˆSingle Source of Truth๏ผ‰ - ่ง„ๅˆ™็ปŸไธ€ๅœจ `rules/` - ๆ–‡ๆกฃ็ปŸไธ€ๅœจ `docs/` - ็คบไพ‹็ปŸไธ€ๅœจ `data/` ### 3. ๅฏๆ‰ฉๅฑ•ๆ€ง - ็œไปฝๅฏๆ‰ฉๅฑ•๏ผˆๆทปๅŠ ๆ–ฐ็œไปฝๅช้œ€ไฟฎๆ”น `PROVINCE_RULES`๏ผ‰ - ้”™่ฏฏๆจกๅผๅฏๆ‰ฉๅฑ•๏ผˆๆทปๅŠ ๆ–ฐ้”™่ฏฏๅˆฐ `ERRORS.md`๏ผ‰ - ๆกˆไพ‹ๅฏๆ‰ฉๅฑ•๏ผˆๆทปๅŠ ๆ–ฐๆกˆไพ‹ๅˆฐ `case-studies/`๏ผ‰ ### 4. ๆธ่ฟ›ๅขžๅผบ - ๅŸบ็ก€ๅฏน่ฏ่ƒฝๅŠ› - ๅขžๅผบ๏ผšๅฏ่ง†ๅŒ–ๆŠฅๅ‘Š - ้ซ˜็บง๏ผš่‡ชๅŠจๆฃ€ๆŸฅ - ไธ“ๅฎถ๏ผšๆ•ฐๆฎ้ฉฑๅŠจๅ†ณ็ญ– ## ๐Ÿ”„ ๆ•ฐๆฎๆต ### ๅœบๆ™ฏA๏ผšๅฏน่ฏ็”Ÿๆˆๆ–นๆกˆ ``` ็”จๆˆท่พ“ๅ…ฅ โ†’ SkillๅŠ ่ฝฝ โ†’ ๆ”ถ้›†ไฟกๆฏ โ†“ ้œๅ…ฐๅพท่ฏ„ไผฐ โ†’ ไธชๆ€งๅŒ–ๅŒน้… โ†’ ้™ขๆ กๆŽจ่ โ†“ ็”Ÿๆˆๆ–นๆกˆ โ†’ ่พ“ๅ‡บ โ†“ ๏ผˆๅฏ้€‰๏ผ‰่ฐƒ็”จ spec-checker ๆฃ€ๆŸฅ ``` ### ๅœบๆ™ฏB๏ผšๆฃ€ๆŸฅ็Žฐๆœ‰ๆ–นๆกˆ ``` ็”จๆˆทๆ–นๆกˆ โ†’ spec-checkerๅŠ ่ฝฝ โ†“ ็œไปฝ่ฏ†ๅˆซ โ†’ ๅŠ ่ฝฝๅฏนๅบ”่ง„ๅˆ™ โ†“ ่ง„ๅˆ™ๅŒน้… โ†’ ๅ‘็Žฐ้—ฎ้ข˜ โ†“ ๅˆ†็ฑป่พ“ๅ‡บ โ†’ ไฟฎๆญฃๅปบ่ฎฎ ``` ### ๅœบๆ™ฏC๏ผš็”Ÿๆˆๅฏ่ง†ๅŒ–ๆŠฅๅ‘Š ``` ่€ƒ็”Ÿๆ•ฐๆฎ โ†’ ๆจกๆฟๆธฒๆŸ“ โ†“ HTML็”Ÿๆˆ โ†’ PDF่ฝฌๆข โ†“ Markdown่พ“ๅ‡บ ``` ## ๐Ÿ”Œ ๆ‰ฉๅฑ•็‚น ### ๆทปๅŠ ๆ–ฐ็œไปฝ ```python # ๅœจ spec_checker_v2.py ไธญ PROVINCE_RULES["ๆ–ฐ็œไปฝ"] = { "mode": "้™ขๆ กไธ“ไธš็ป„", "max_volunteers": 45, "max_majors_per_group": 6, "has_adjustment": True, "adjustment_scope": "็ป„ๅ†…ไธ“ไธš", "retrieval_rule": "...", "collection_count": 2, "subject_mode": "3+1+2", "official_url": "...", "exam_subject_total": 750, } ``` ### ๆทปๅŠ ๆ–ฐ้”™่ฏฏๆจกๅผ ```markdown ### E###๏ผš<้”™่ฏฏๅ็งฐ> - **็—‡็Šถ**๏ผš<ๆ–นๆกˆ่กจ็Žฐ> - **ๆญฃ็กฎ**๏ผš<ๅบ”่ฏฅๆ˜ฏ> - **ๅœบๆ™ฏ**๏ผš<ไฝ•ๆ—ถๅ‡บ็Žฐ> - **ไฟฎๅค**๏ผš<ๅฆ‚ไฝ•ไฟฎๆญฃ> - **้ฆ–ๆฌกๅ‘็Žฐ**๏ผš<ๆ—ฅๆœŸ> ``` ### ๆทปๅŠ ๆ–ฐSkill ``` skills/ โ”œโ”€โ”€ my-new-skill/ โ”‚ โ”œโ”€โ”€ SKILL.md โ”‚ โ”œโ”€โ”€ references/ โ”‚ โ”œโ”€โ”€ templates/ โ”‚ โ””โ”€โ”€ scripts/ ``` ## ๐Ÿ“Š ๆŠ€ๆœฏๆ ˆ | ๅฑ‚ | ๆŠ€ๆœฏ | | ----- | --------------------------- | | Skill | Markdown + YAML frontmatter | | ่„šๆœฌ | Python 3.10+ | | ๆ•ฐๆฎ | JSON / YAML / Markdown | | ็‰ˆๆœฌ | Git | | ๆ–‡ๆกฃ | Markdown | ## ๐ŸŽ“ ๅญฆไน ่ทฏๅพ„ ### ๆ–ฐๆ‰‹๏ผˆ1ๅคฉ๏ผ‰ 1. ้˜…่ฏป README.md 2. ไบ†่งฃ3ไธชSkill็š„ไฝœ็”จ 3. ไฝ“้ชŒ1ๆฌกๅฎŒๆ•ดๅฏน่ฏๆต็จ‹ ### ่ฟ›้˜ถ๏ผˆ3ๅคฉ๏ผ‰ 1. ็†Ÿๆ‚‰ rules/ ็›ฎๅฝ•็ป“ๆž„ 2. ๅญฆไน  spec-checker ็š„ๅทฅไฝœๅŽŸ็† 3. ไฟฎๆ”นไธ€ไปฝ็Žฐๆœ‰ๆ–นๆกˆ ### ไธ“ๅฎถ๏ผˆ1ๅ‘จ๏ผ‰ 1. ๆทปๅŠ ไธ€ไธชๆ–ฐ็œไปฝ่ง„ๅˆ™ 2. ๆทปๅŠ ไธ€็งๆ–ฐ้”™่ฏฏๆจกๅผ 3. ไผ˜ๅŒ–ไธ€ไธชSkill็š„้€ป่พ‘ --- **็‰ˆๆœฌ**๏ผšv2.0 **ๆœ€ๅŽๆ›ดๆ–ฐ**๏ผš2026-06-11