[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C2P6Q7F2DM8DTWE55CSVKD":3,"skill-same:01M6C2P6Q7F2DM8DTWE55CSVKD":79},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":14,"categories":15,"keywords":21,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":27,"frontMatter":28,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":6,"ownerHtmlUrl":34,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":35,"install":36,"resources":49},"01M6C2P6Q7F2DM8DTWE55CSVKD","modal-agent-pattern",null,"jleechanorg\u002Fjleechan-skills","jleechanorg","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F221404966?v=4","01M6C1VJ99XG950X1DWPEBCBGX","01M6C1VJDK5YVDNT3362RT5WSB",6,"MIT","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills_archive\u002F2026-08-27-historical-zero-use\u002Fmodal-agent-pattern\u002FSKILL.md",[16],{"categoryNo":17,"categoryName":18,"taxonomyType":19,"taxonomyTypeDesc":20},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[22,23,24],"modal","modal agent pattern","pattern","2026-11-10 10:12:30",false,"# Modal Agent Pattern - Strict Character Creation & Level-Up\n\n**Purpose:** Design specification for \"modal\" agents that cannot be exited until the user explicitly chooses to exit. This prevents accidental escapes from character creation and level-up flows.\n\n## Problem Statement\n\n### Current Behavior (Problematic)\n1. **Character Creation can be bypassed**: Users can start a campaign and immediately begin the story without creating a character\n2. **Classifier interference**: The intent classifier can route away from CharacterCreationAgent to other agents (dialog, combat, etc.) based on user input\n3. **No explicit exit mechanism**: No forced \"Exit Character Creation\" choice that must be selected\n4. **Level-up escapes**: Users can exit level-up flows without completing ability score improvements, feat selection, or spell choices\n\n### Root Cause\n- `get_agent_for_input()` routing logic allows semantic classification to override character creation\u002Flevel-up state\n- Priority 5 (semantic classifier) can route to Dialog, Combat, Rewards agents EVEN when Priority 4 (CharacterCreationAgent state check) should be active\n- No enforcement of completion choices in the LLM prompt\n\n## Solution: Modal Agent Pattern\n\n### Core Principles\n\n**1. MODAL AGENTS**\nAgents that implement the modal pattern:\n- **CharacterCreationAgent** (for new character creation AND level-ups)\n- **LevelUpAgent** (new dedicated agent for level-up flows)\n\n**2. MODAL CONSTRAINTS**\nWhen a modal agent is active:\n- User CANNOT leave until they explicitly select an \"Exit\" choice\n- Semantic classifier is DISABLED (bypassed entirely)\n- Only two agents can be accessed:\n  - The modal agent itself (CharacterCreationAgent or LevelUpAgent)\n  - GodModeAgent (always accessible via \"GOD MODE:\" prefix)\n\n**3. EXIT MECHANISM**\nTwo ways to exit modal agents:\n- **LLM-generated choice**: Modal agent MUST include \"Exit Character Creation\" \u002F \"Exit Level-Up\" as a choice in `planning_block.choices`\n- **Python-side injection**: If LLM forgets to include exit choice, Python backend injects it automatically\n\n**4. ROUTING PRIORITY OVERRIDE**\nWhen modal agent is active (based on game state):\n- Priority 1: GodModeAgent (unchanged)\n- **Priority 2: MODAL AGENT CHECK (NEW - BLOCKS ALL OTHER ROUTING)**\n  - If `character_creation_in_progress == true`, ONLY route to CharacterCreationAgent or GodModeAgent\n  - If `level_up_in_progress == true`, ONLY route to LevelUpAgent or GodModeAgent\n- Priority 3+: All other routing (SKIPPED during modal flows)\n\n## Implementation Design\n\n### 1. State Flags\n\n**Character Creation Modal State:**\n```json\n\"custom_campaign_state\": {\n  \"character_creation_in_progress\": true,  \u002F\u002F MODAL LOCK - prevents exit\n  \"character_creation_stage\": \"mechanics\", \u002F\u002F Current stage\n  \"character_creation_completed\": false    \u002F\u002F Final completion flag\n}\n```\n\n**Level-Up Modal State:**\n```json\n\"custom_campaign_state\": {\n  \"level_up_in_progress\": true,           \u002F\u002F MODAL LOCK - prevents exit\n  \"level_up_stage\": \"asi_selection\",      \u002F\u002F Current stage\n  \"level_up_from_level\": 3,               \u002F\u002F Level before level-up\n  \"level_up_to_level\": 4                  \u002F\u002F Target level\n}\n```\n\n### 2. Agent Routing Logic (`get_agent_for_input`)\n\n**NEW Priority 2: Modal Agent Lock**\n\n```python\ndef get_agent_for_input(\n    user_input: str,\n    game_state: GameState | None = None,\n    mode: str | None = None,\n    last_ai_response: str | None = None,\n) -> tuple[BaseAgent, dict[str, Any]]:\n    \"\"\"\n    Priority:\n    1. GodModeAgent (Manual override)\n    2. MODAL AGENT LOCK (NEW - CharacterCreation\u002FLevelUp active)\n    3. Character Creation Completion Override\n    4. CampaignUpgradeAgent (State-based)\n    5. Semantic Intent Classification\n    6. API Explicit Mode\n    7. StoryModeAgent (Default)\n    \"\"\"\n\n    # 1. God Mode (always accessible)\n    if GodModeAgent.matches_input(user_input, mode):\n        return GodModeAgent(game_state), {...}\n\n    # 2. MODAL AGENT LOCK (NEW)\n    # This check MUST come before ALL other routing (except God Mode)\n    if game_state is not None:\n        custom_state = get_custom_state(game_state)\n\n        # Check for modal agent lock flags\n        if custom_state.get(\"character_creation_in_progress\", False):\n            logging_util.info(\"? MODAL_LOCK: CharacterCreationAgent locked - ignoring classifier\")\n            return CharacterCreationAgent(game_state), {\n                \"intent\": constants.MODE_CHARACTER_CREATION,\n                \"classifier_source\": \"modal_lock\",\n                \"confidence\": 1.0,\n                \"routing_priority\": \"2_modal_char_creation\"\n            }\n\n        if custom_state.get(\"level_up_in_progress\", False):\n            logging_util.info(\"? MODAL_LOCK: LevelUpAgent locked - ignoring classifier\")\n            return LevelUpAgent(game_state), {\n                \"intent\": constants.MODE_LEVEL_UP,\n                \"classifier_source\": \"modal_lock\",\n                \"confidence\": 1.0,\n                \"routing_priority\": \"2_modal_level_up\"\n            }\n\n    # 3. Character Creation Completion (check if user explicitly exited)\n    # ... existing completion logic ...\n\n    # 4-7. All other routing continues as normal\n    # ... existing routing logic ...\n```\n\n### 3. LLM Prompt Instructions\n\n**Updated `character_creation_instruction.md`:**\n\nAdd new section after \"Core Principle\":\n\n```markdown\n## CRITICAL: Modal Agent Constraints\n\n**YOU ARE IN A MODAL DIALOG - USER CANNOT LEAVE WITHOUT EXPLICIT EXIT**\n\nWhile character creation is in progress:\n1. **CLASSIFIER IS DISABLED**: User input will NOT be routed to other agents\n2. **ONLY TWO AGENTS ACCESSIBLE**:\n   - CharacterCreationAgent (you)\n   - GodModeAgent (via \"GOD MODE:\" prefix only)\n3. **REQUIRED EXIT CHOICE**: You MUST provide an explicit exit choice in EVERY response:\n   - \"Exit Character Creation\" (complete and return to story)\n   - OR \"Continue Creating Character\" (stay in this mode)\n\n**MANDATORY CHOICE FORMAT:**\n```json\n\"planning_block\": {\n  \"choices\": {\n    \"option_1\": {\n      \"text\": \"Finish Character Creation\",\n      \"description\": \"Complete character and start the adventure\"\n    },\n    \"option_2\": {\n      \"text\": \"Continue Editing\",\n      \"description\": \"Make more changes to the character\"\n    }\n  }\n}\n```\n\n**If you forget to include the exit choice, the Python backend will inject it automatically.**\n\n### Why This Matters\n- Users cannot accidentally escape character creation by saying things like \"let's start the adventure\" before character is ready\n- Semantic classifier cannot route dialog-like queries (\"tell me about my character\") to DialogAgent\n- Combat-like queries (\"what weapons do I have?\") stay in character creation context\n- Level-up flows cannot be interrupted mid-ASI selection\n```\n\n**New dedicated prompt: `level_up_instruction.md`:**\n\n```markdown\n# Level-Up Mode - Strict Modal Flow\n\n**Purpose:** Process level-ups with full D&D 5e rule compliance. User CANNOT leave until level-up is complete.\n\n## CRITICAL: Modal Agent Constraints\n\n**YOU ARE IN A MODAL DIALOG - USER CANNOT LEAVE WITHOUT EXPLICIT EXIT**\n\n[Same modal constraints as character creation]\n\n## Level-Up Flow\n\n### Step 1: Announce Level-Up\nPresent level increase, XP totals, and what will be gained.\n\n### Step 2: Hit Points\n- Roll hit die OR take average\n- Add Constitution modifier\n- Update hp_max\n\n### Step 3: Class Features\nPresent new features gained at this level.\n\n### Step 4: Ability Score Improvement (ASI) or Feat\n**MODAL CHECKPOINT**: User MUST make a choice:\n- Increase ability scores (+2 to one, or +1 to two)\n- Select a feat\n\n**REQUIRED CHOICES:**\n```json\n\"planning_block\": {\n  \"choices\": {\n    \"option_1\": {\"text\": \"Increase Ability Scores\", \"description\": \"...\"},\n    \"option_2\": {\"text\": \"Choose a Feat\", \"description\": \"...\"},\n    \"option_3\": {\"text\": \"Exit Level-Up\", \"description\": \"Complete level-up and return to story\"}\n  }\n}\n```\n\n### Step 5: Spellcasting (if applicable)\nProcess new spell slots, spells known, cantrips.\n\n### Step 6: Completion\nOnce all choices made, present summary and REQUIRE exit choice:\n```json\n\"planning_block\": {\n  \"choices\": {\n    \"option_1\": {\"text\": \"Complete Level-Up\", \"description\": \"Finish and return to adventure\"},\n    \"option_2\": {\"text\": \"Review Changes\", \"description\": \"Double-check selections\"}\n  }\n}\n```\n```\n\n### 4. Python-Side Exit Choice Injection\n\n**New utility: `$PROJECT_ROOT\u002Fmodal_agent_utils.py`**\n\n```python\n\"\"\"\nModal Agent Utilities - Exit Choice Injection\n\nThis module ensures modal agents (CharacterCreation, LevelUp) always\nprovide explicit exit choices, even if the LLM forgets to include them.\n\"\"\"\n\nfrom mvp_site import logging_util\n\nEXIT_CHOICE_CHAR_CREATION = {\n    \"text\": \"Exit Character Creation\",\n    \"description\": \"Complete character creation and start the adventure\"\n}\n\nEXIT_CHOICE_LEVEL_UP = {\n    \"text\": \"Exit Level-Up\",\n    \"description\": \"Complete level-up and return to the story\"\n}\n\ndef inject_exit_choice_if_missing(\n    response_dict: dict,\n    agent_type: str  # \"character_creation\" or \"level_up\"\n) -> dict:\n    \"\"\"\n    Inject exit choice into LLM response if missing.\n\n    Args:\n        response_dict: LLM response dictionary with planning_block\n        agent_type: Type of modal agent (\"character_creation\" or \"level_up\")\n\n    Returns:\n        Modified response_dict with exit choice guaranteed\n    \"\"\"\n    # Get planning_block\n    planning_block = response_dict.get(\"planning_block\", {})\n    choices = planning_block.get(\"choices\", {})\n\n    # Determine which exit choice to use\n    exit_choice = (\n        EXIT_CHOICE_CHAR_CREATION\n        if agent_type == \"character_creation\"\n        else EXIT_CHOICE_LEVEL_UP\n    )\n\n    # Check if any choice matches exit intent\n    has_exit_choice = False\n    exit_keywords = [\"exit\", \"finish\", \"complete\", \"done\", \"return\"]\n\n    for choice_key, choice_data in choices.items():\n        if isinstance(choice_data, dict):\n            text = choice_data.get(\"text\", \"\").lower()\n            if any(keyword in text for keyword in exit_keywords):\n                has_exit_choice = True\n                break\n\n    # Inject exit choice if missing\n    if not has_exit_choice:\n        logging_util.warning(\n            f\"? MODAL_AGENT_INJECTION: LLM forgot exit choice for {agent_type}, \"\n            f\"injecting automatically\"\n        )\n\n        # Find next available option number\n        existing_keys = [k for k in choices.keys() if k.startswith(\"option_\")]\n        if existing_keys:\n            max_num = max(int(k.split(\"_\")[1]) for k in existing_keys)\n            new_key = f\"option_{max_num + 1}\"\n        else:\n            new_key = \"option_1\"\n\n        # Inject exit choice\n        choices[new_key] = exit_choice\n        planning_block[\"choices\"] = choices\n        response_dict[\"planning_block\"] = planning_block\n\n    return response_dict\n```\n\n**Integration point in `world_logic.py` or response handler:**\n\n```python\n# After LLM response parsing, before returning to user\nif current_agent_type == \"character_creation\":\n    response_dict = inject_exit_choice_if_missing(\n        response_dict,\n        \"character_creation\"\n    )\nelif current_agent_type == \"level_up\":\n    response_dict = inject_exit_choice_if_missing(\n        response_dict,\n        \"level_up\"\n    )\n```\n\n### 5. Frontend Changes (Optional Enhancement)\n\n**UI-level enforcement:**\n- When `character_creation_in_progress == true`, disable \"Send\" button unless:\n  - Input matches exit choice text, OR\n  - Input is \"GOD MODE:\" prefix\n- Show modal dialog backdrop to indicate locked state\n- Display \"You are in Character Creation Mode\" banner\n\n## Edge Cases & Handling\n\n### Case 1: User tries to escape with dialog-like input\n**Input:** \"I want to talk to the bartender\"\n**Current behavior:** Classifier routes to DialogAgent\n**New behavior:** Modal lock returns CharacterCreationAgent, responds with:\n```\n[CHARACTER CREATION MODE - Active]\n\nYou're currently creating your character. Before you can interact with the world,\nwe need to finish building your character.\n\nWould you like to:\n1. Continue Character Creation\n2. Exit Character Creation (if character is ready)\n```\n\n### Case 2: User tries combat-like action\n**Input:** \"I attack the goblin\"\n**Current behavior:** Classifier routes to CombatAgent\n**New behavior:** Modal lock returns CharacterCreationAgent, responds with:\n```\n[CHARACTER CREATION MODE - Active]\n\nYou're eager to jump into action! But first, let's finish creating your character\nso you have the stats and abilities you'll need in combat.\n\nCurrent Progress: [stage summary]\n\nReady to exit character creation?\n1. Finish Character Creation (if ready)\n2. Continue Building Character\n```\n\n### Case 3: LLM forgets exit choice\n**LLM response:** Only provides character customization choices, no exit option\n**Python injection:** Automatically adds \"Exit Character Creation\" as final choice\n**User sees:** All LLM choices + injected exit choice\n\n### Case 4: Level-up with multiple stages\n**Scenario:** Level 4 → Level 5 requires ASI + new spell selection\n**Behavior:**\n- Turn 1: ASI selection (choices: +2 to one, +1 to two, choose feat, exit)\n- Turn 2: Spell selection (choices: spell A, spell B, spell C, exit)\n- Turn 3: Review summary (choices: confirm, review again, exit)\n- Modal lock persists until user selects exit choice\n\n### Case 5: God Mode Override\n**Input:** \"GOD MODE: skip character creation and start at level 5\"\n**Behavior:** GodModeAgent takes over (Priority 1), can bypass modal lock\n**Justification:** God Mode is admin\u002Fdebugging tool and should have full override\n\n## Benefits\n\n1. **Prevents accidental bypasses**: Campaign ARrfJ39LhNEi5rcGq1c7 issue would be impossible\n2. **Clear UX**: Users know they're in a modal flow and how to exit\n3. **Classifier isolation**: Semantic classifier doesn't interfere with creation flows\n4. **LLM safety net**: Python injection ensures exit choice always exists\n5. **Consistent pattern**: Same approach for character creation AND level-ups\n\n## Implementation Phases\n\n### Phase 1: Core Modal Lock (Minimum Viable)\n- [ ] Add `character_creation_in_progress` check at Priority 2 in `get_agent_for_input`\n- [ ] Update `character_creation_instruction.md` with modal constraints\n- [ ] Test that classifier is bypassed during character creation\n\n### Phase 2: Exit Choice Injection\n- [ ] Create `modal_agent_utils.py` with `inject_exit_choice_if_missing`\n- [ ] Integrate injection into response handler\n- [ ] Test LLM responses with\u002Fwithout exit choices\n\n### Phase 3: Level-Up Agent\n- [ ] Create dedicated `LevelUpAgent` class\n- [ ] Add `level_up_instruction.md` prompt\n- [ ] Implement `level_up_in_progress` modal lock\n- [ ] Update routing logic for level-up flows\n\n### Phase 4: Enhanced UX (Optional)\n- [ ] Frontend modal dialog backdrop\n- [ ] \"Character Creation Mode\" banner\n- [ ] Disable irrelevant UI actions during modal flow\n\n## Testing Strategy\n\n### Unit Tests\n- `test_modal_agent_routing.py`: Verify Priority 2 modal lock\n- `test_exit_choice_injection.py`: Verify Python injection logic\n- `test_character_creation_modal.py`: End-to-end character creation with modal lock\n\n### Integration Tests\n- Create campaign → Verify cannot escape char creation with dialog input\n- Level-up flow → Verify cannot escape mid-ASI selection\n- God Mode override → Verify can bypass modal lock\n\n### Edge Case Tests\n- LLM forgets exit choice → Verify injection works\n- Multiple level-up stages → Verify modal lock persists\n- Campaign with pre-populated character → Verify review mode works\n\n## Related Files\n\n**Agent routing:**\n- `\u002FUsers\u002F$USER\u002Fprojects\u002Fworktree_worker8\u002F$PROJECT_ROOT\u002Fagents.py` (lines 2552-3164)\n\n**Character creation:**\n- `\u002FUsers\u002F$USER\u002Fprojects\u002Fworktree_worker8\u002F$PROJECT_ROOT\u002Fagents.py` (lines 830-1151, CharacterCreationAgent)\n- `\u002FUsers\u002F$USER\u002Fprojects\u002Fworktree_worker8\u002F$PROJECT_ROOT\u002Fprompts\u002Fcharacter_creation_instruction.md`\n\n**Intent classifier:**\n- `\u002FUsers\u002F$USER\u002Fprojects\u002Fworktree_worker8\u002F$PROJECT_ROOT\u002Fintent_classifier.py`\n\n**State management:**\n- `\u002FUsers\u002F$USER\u002Fprojects\u002Fworktree_worker8\u002F$PROJECT_ROOT\u002Fgame_state.py`\n\n## References\n\n- CLAUDE.md: LLM decides, server executes (lines 10-30)\n- Intent classifier architecture (intent_classifier.py lines 1-176)\n- Agent routing priority (agents.py lines 2552-2585)\n",{},"main","42ccd02cbf5e8e47839dc3eab6fc754dc6b339cf",".claude\u002Fskills_archive\u002F2026-08-27-historical-zero-use\u002Fmodal-agent-pattern",0,"https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills","https:\u002F\u002Fgithub.com\u002Fjleechanorg","2026-11-11 22:19:36",{"source":7,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add jleechanorg\u002Fjleechan-skills --skill modal-agent-pattern",{"tool":42,"command":43},"bunx","bunx skills add jleechanorg\u002Fjleechan-skills --skill modal-agent-pattern",{"tool":45,"command":46},"pnpm","pnpm dlx skills add jleechanorg\u002Fjleechan-skills --skill modal-agent-pattern","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills_archive\u002F2026-08-27-historical-zero-use\u002Fmodal-agent-pattern\u002FSKILL.md",true,[50,56,61,65,69,73],{"path":51,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":55},"examples\u002Fbefore-after.md","REFERENCE","参考文档",2629,"https:\u002F\u002Fgithub.com\u002Fknacklabs\u002Fsymphony-forge\u002Fblob\u002Fmain\u002Fsrc\u002Fforge\u002Ftemplates\u002Fskills\u002Fsimplified-technical-english\u002Fexamples\u002Fbefore-after.md",{"path":57,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"LICENSE","许可证",1494,"https:\u002F\u002Fgithub.com\u002Fknacklabs\u002Fsymphony-forge\u002Fblob\u002Fmain\u002Fsrc\u002Fforge\u002Ftemplates\u002Fskills\u002Fsimplified-technical-english\u002FLICENSE",{"path":62,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":63,"sourceHtmlUrl":64},"NOTICE.md",1515,"https:\u002F\u002Fgithub.com\u002Fknacklabs\u002Fsymphony-forge\u002Fblob\u002Fmain\u002Fsrc\u002Fforge\u002Ftemplates\u002Fskills\u002Fsimplified-technical-english\u002FNOTICE.md",{"path":66,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":67,"sourceHtmlUrl":68},"references\u002Fsubstitutions.md",4908,"https:\u002F\u002Fgithub.com\u002Fknacklabs\u002Fsymphony-forge\u002Fblob\u002Fmain\u002Fsrc\u002Fforge\u002Ftemplates\u002Fskills\u002Fsimplified-technical-english\u002Freferences\u002Fsubstitutions.md",{"path":70,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002Fwriting-rules.md",11443,"https:\u002F\u002Fgithub.com\u002Fknacklabs\u002Fsymphony-forge\u002Fblob\u002Fmain\u002Fsrc\u002Fforge\u002Ftemplates\u002Fskills\u002Fsimplified-technical-english\u002Freferences\u002Fwriting-rules.md",{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"scripts\u002Fste_check.py","SCRIPT","脚本",11433,"https:\u002F\u002Fgithub.com\u002Fknacklabs\u002Fsymphony-forge\u002Fblob\u002Fmain\u002Fsrc\u002Fforge\u002Ftemplates\u002Fskills\u002Fsimplified-technical-english\u002Fscripts\u002Fste_check.py",[80,98,120,134,148,164],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":25},"01M716Y5MTJ6GYJZ2ATXCJK8G4","instinct","Use when the user invokes \u002Finstinct or \u002Fin, or asks to \"message Instinct\", \"ask Instinct\", \"tell Instinct\", \"check Instinct\", or read replies from the configured peer assistant. iMessage first, WhatsApp Web as fallback.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finstinct\u002FSKILL.md",[],[82,87,88,89,90,91,92,93,94,95,96,97],"user","when","replies","check","use","identity","whatsapp","gmail","read","message","ask",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":109,"publishedAt":25},"01M716Y4HF7FVVMJSA2CCVN5VF","hr","Compatibility alias for history-resume; produce the same fresh-state, provenance-aware resume briefing.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhr\u002FSKILL.md",[104],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[100,110,111,112,113,114,115,116,117,118,119],"resume","compatibility","provenance","for","history","produce","alias","briefing","state","fresh",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":127,"publishedAt":25},"01M716Y1FFNFKFJYYKF8HQA6T8","history-resume","Resume briefing for the current repository branch or worktree using fresh state and admitted history sources.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhistory-resume\u002FSKILL.md",[126],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},[114,110,128,129,87,130,117,131,113,132,133,118,119],"history resume","branch","analysis","repository","worktree","sources",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":25},"01M716XWXJ8EPHK4RH9T14TR85","grok","Alias for the canonical grokbot browser conversation workflow; \u002Fgrok talks to the Grok bot the same way \u002Fdot talks to Dot.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgrok\u002FSKILL.md",[],[136,141,142,143,113,144,116,145,146,147],"dot","bot","workflow","canonical","conversation","browser","grokbot",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":25},"01M70N9Q07DTE0EW5KFXMMMSJ0","codexa-bench","Compare `codexa` and normal `codex` on a fair split of comparable work by default; use `--strict` for duplicate runs of the exact same task.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcodexa-bench\u002FSKILL.md",[],[155,156,157,91,158,113,159,160,161,162,163],"codexa bench","work","split","default","duplicate","task","compare","normal","codex",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":168,"licenseFileUrl":169,"sourceHtmlUrl":170,"categories":171,"keywords":181,"publishedAt":25},"01M6C24S2X60SP8BBFGAEKPEGW","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ffrontend-design\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ffrontend-design\u002FSKILL.md",[172,175,178],{"categoryNo":173,"categoryName":174,"taxonomyType":19,"taxonomyTypeDesc":20},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":176,"categoryName":177,"taxonomyType":19,"taxonomyTypeDesc":20},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":179,"categoryName":180,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000032","设计师",[182,183,184,91,185,186,187,87,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,88,206],"frontend","design","frontend design","generic","ui design","react","html","components","code","artifacts","ui","aesthetics","Production","web components","landing","applications","quality","web","css","create","examples","with","react components","web ui","pages"]