[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BZP3BFZ5HZMPN537CD2QJ1":3,"skill-same:01M6BZP3BFZ5HZMPN537CD2QJ1":81},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":42,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6BZP3BFZ5HZMPN537CD2QJ1","readme.explain_code",null,"Document a Python file's classes, functions, and relationships in markdown","causify-ai\u002Fhelpers","causify-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F121828442?v=4","01M6BZFTHW2MQR7FWK8CDW0DRA","Causify.AI","01M6BZFTPJ193AB5N089Z82HQG",155,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Freadme.explain_code\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[24,25,26,27,28,29,30],"code","explain code","explain","readme explain code","python","file","markdown","2026-11-10 10:12:30",false,"---\ndescription: Document a Python file's classes, functions, and relationships in markdown\nmodel: sonnet\n---\n\n# Goal\n\n- Read one or more Python files passed by the user and generate a markdown file\n  `explain_code.\u003Cdescr>.md` that documents their classes, functions, interfaces,\n  and relationships\n\n# Workflow\n\n## Read the Files\n\n- Read every Python file `\u003CFILE>` passed by the user or referenced in the request\n\n## Generate the Document\n\n- Generate the file in the directory where you are running, named\n  `explain_code.\u003Cdescr>.md`\n  - `\u003Cdescr>` is a short slug for what was read, typically the source file's\n    basename without extension (e.g., `batch_call_auction` for\n    `batch_call_auction.py`); pick a combined slug when documenting several files\n    together\n- Include the five sections below, in this exact order\n- Under each section, print one level-2 header (`## `) per file read, using the\n  same path that was used to read the file in Step 1 (this disambiguates files\n  that share a basename in different directories)\n- Omit a section, or a file's subsection within it, entirely if there is nothing\n  to report; never print an empty header or a placeholder bullet like `- `\n- Do not print result to screen but only to file\n\n## Verify\n\n- Follow the `# Verification` checklist below before returning the result\n\n# File Description\n\n- Print a nested bullet list for each file describing what are the abstractions\n  and functionalities the file contains\n- Keep the files ordered in terms of use relationship\n  - E.g., if file X is imported by Y, then X should come before Y in the list\n\n- E.g.,\n  ```markdown\n  - `batch_call_auction.py`\n    - In-memory order book for a batch call auction\n    - Queues buy\u002Fsell orders, buckets by capability tier\n    - Clears each tier at a uniform price once per round\n  - `passthrough_proxy.py`\n    - LLM provider gateway\n    - Routes a prompt to a registered provider\n    - Times the call, estimates cost, and logs every request\u002Fresponse pair for\n      later query\n  ```\n\n# Class Description\n\n- For each file, print one bullet per Python class with a description under\n  20 words\n\n- E.g.,\n  ```markdown\n  # Class Description\n\n  ## `research\u002FNoesis\u002Fbatch_call_auction.py`\n\n  - `Bid`\n    - Buyer order: (tasks, min tier, max latency, min reliability, max price)\n  - `Ask`\n    - Seller order: (tasks, tier, typical latency\u002Freliability, min price)\n  - `Fill`\n    - One matched buyer\u002Fseller trade at a tier's uniform clearing price\n  - `TierClearResult`\n    - Outcome of clearing one tier (price, fills, unfilled quantities)\n  - `OrderBookStore`\n    - Abstract pluggable storage backend for pending bids\u002Fasks\n\n  ## \u003Cfile.py>\n  ...\n  ```\n\n# Class Interface\n\n- For each file, print every class with the class it descends from (or\n  `(dataclass)` if it has no explicit base) and a nested bullet per method\n  with its full signature and a description under 20 words\n- If a class defines no custom methods (e.g., a plain dataclass with only an\n  auto-generated constructor), say so instead of listing a signature\n\n- E.g.,\n  ```markdown\n  # Class Interface\n\n  ## `research\u002FNoesis\u002Fbatch_call_auction.py`\n\n  - `Bid(dataclass)`\n    - `__init__(self, buyer_id: str, n_tasks: int, c_level_min: str, l_max: float, r_min: float, p_max: float) -> None`\n      - Validates and stores one buy order\n\n  - `Fill(dataclass)`\n    - Plain data holder, no custom methods\n\n  - `OrderBookStore(abc.ABC)`\n    - `add_bid(self, bid: Bid) -> None`\n      - Queue a bid\n    - `clear(self) -> None`\n      - Abstract, drop every stored bid\u002Fask\n\n  ## \u003Cfile.py>\n  ...\n  ```\n\n# Function Interface\n\n- For each file, list its module-level functions only, i.e., functions\n  defined outside any class (methods are already covered under Class\n  Interface)\n- Include underscore-prefixed module-level functions when they hold core\n  logic; skip trivial one-line helpers\n- One line per function: full signature and a description under 20 words\n\n- E.g.,\n  ```markdown\n  # Function Interface\n\n  ## `research\u002FNoesis\u002Fbatch_call_auction.py`\n\n  - `_match_orders_in_tier(c_level: str, bids: List[Bid], asks: List[Ask]) -> TierClearResult`\n    - Matches one tier's bids\u002Fasks and computes uniform clearing price\n\n  ## \u003Cfile.py>\n  ...\n  ```\n\n# Function Relationship\n\n- For each module-level function from `# Function Interface`, list who calls\n  it and what it calls, scoped to the files read\n- Skip trivial one-line method delegations already implied by\n  `# Class Relationships` (e.g., a method that only forwards to a stored\n  collaborator)\n\n- E.g.,\n  ```markdown\n  # Function Relationship\n\n  ## `research\u002FNoesis\u002Fbatch_call_auction.py`\n\n  - `_match_orders_in_tier()`\n    - Called by: `OrderBook.clear_round()`, once per capability tier\n    - Calls: no other functions in this file\n\n  ## \u003Cfile.py>\n  ...\n  ```\n\n# Class Relationships\n\n- Print the relationships among all classes across all files read, grouped\n  under level-2 headers\n- Typical groups are `## Inheritance`, `## Composition`, `## Uses`, and\n  `## Mirrors` (schema correspondence with no code dependency); only include a\n  group if it applies, and only list classes for which the relationship holds\n\n- E.g.,\n  ```markdown\n  # Class Relationships\n\n  ## Inheritance\n\n  - `OrderBookStore`\n    - `_InMemoryOrderBookStore` from `batch_call_auction.py`\n    - `PostgresOrderBookStore` from `postgres_store.py`\n\n  ## Composition\n\n  - `OrderBook`\n    - Holds one `OrderBookStore`\n\n  ## Uses\n\n  - `OrderBook.clear_round()` calls `_match_orders_in_tier()` per capability\n    tier and returns `Dict[str, TierClearResult]`\n  - `TierClearResult` aggregates `List[Fill]`\n\n  ## Mirrors\n\n  - `BidRequest` (API layer) \u003C-> `Bid` (matching engine): same fields, no\n    shared code\n  ```\n\n# Conventions\n\n- Follow `.claude\u002Fskills\u002Fmarkdown.rules.md` and `.claude\u002Fskills\u002Ftext.rules.md`\n  for markdown and text formatting\n- Keep every bullet description under 20 words\n- Enclose class names, function names, and file paths in backticks\n\n# Constraints\n\n- Do not modify the Python files being read\n- Base every bullet strictly on what the code shows; do not invent classes,\n  functions, or relationships that are not present\n- Never print an empty section header or a placeholder bullet (`-` with no\n  text)\n\n# Verification\n\n- Every class and function name mentioned exists in a file that was read\n- Every file that was read appears as a level-2 header in each section where\n  it has content, using the same path used to read it\n- No section or subsection is present with zero bullets under it\n- Every description is under 20 words\n","# Goal\n\n- Read one or more Python files passed by the user and generate a markdown file\n  `explain_code.\u003Cdescr>.md` that documents their classes, functions, interfaces,\n  and relationships\n\n# Workflow\n\n## Read the Files\n\n- Read every Python file `\u003CFILE>` passed by the user or referenced in the request\n\n## Generate the Document\n\n- Generate the file in the directory where you are running, named\n  `explain_code.\u003Cdescr>.md`\n  - `\u003Cdescr>` is a short slug for what was read, typically the source file's\n    basename without extension (e.g., `batch_call_auction` for\n    `batch_call_auction.py`); pick a combined slug when documenting several files\n    together\n- Include the five sections below, in this exact order\n- Under each section, print one level-2 header (`## `) per file read, using the\n  same path that was used to read the file in Step 1 (this disambiguates files\n  that share a basename in different directories)\n- Omit a section, or a file's subsection within it, entirely if there is nothing\n  to report; never print an empty header or a placeholder bullet like `- `\n- Do not print result to screen but only to file\n\n## Verify\n\n- Follow the `# Verification` checklist below before returning the result\n\n# File Description\n\n- Print a nested bullet list for each file describing what are the abstractions\n  and functionalities the file contains\n- Keep the files ordered in terms of use relationship\n  - E.g., if file X is imported by Y, then X should come before Y in the list\n\n- E.g.,\n  ```markdown\n  - `batch_call_auction.py`\n    - In-memory order book for a batch call auction\n    - Queues buy\u002Fsell orders, buckets by capability tier\n    - Clears each tier at a uniform price once per round\n  - `passthrough_proxy.py`\n    - LLM provider gateway\n    - Routes a prompt to a registered provider\n    - Times the call, estimates cost, and logs every request\u002Fresponse pair for\n      later query\n  ```\n\n# Class Description\n\n- For each file, print one bullet per Python class with a description under\n  20 words\n\n- E.g.,\n  ```markdown\n  # Class Description\n\n  ## `research\u002FNoesis\u002Fbatch_call_auction.py`\n\n  - `Bid`\n    - Buyer order: (tasks, min tier, max latency, min reliability, max price)\n  - `Ask`\n    - Seller order: (tasks, tier, typical latency\u002Freliability, min price)\n  - `Fill`\n    - One matched buyer\u002Fseller trade at a tier's uniform clearing price\n  - `TierClearResult`\n    - Outcome of clearing one tier (price, fills, unfilled quantities)\n  - `OrderBookStore`\n    - Abstract pluggable storage backend for pending bids\u002Fasks\n\n  ## \u003Cfile.py>\n  ...\n  ```\n\n# Class Interface\n\n- For each file, print every class with the class it descends from (or\n  `(dataclass)` if it has no explicit base) and a nested bullet per method\n  with its full signature and a description under 20 words\n- If a class defines no custom methods (e.g., a plain dataclass with only an\n  auto-generated constructor), say so instead of listing a signature\n\n- E.g.,\n  ```markdown\n  # Class Interface\n\n  ## `research\u002FNoesis\u002Fbatch_call_auction.py`\n\n  - `Bid(dataclass)`\n    - `__init__(self, buyer_id: str, n_tasks: int, c_level_min: str, l_max: float, r_min: float, p_max: float) -> None`\n      - Validates and stores one buy order\n\n  - `Fill(dataclass)`\n    - Plain data holder, no custom methods\n\n  - `OrderBookStore(abc.ABC)`\n    - `add_bid(self, bid: Bid) -> None`\n      - Queue a bid\n    - `clear(self) -> None`\n      - Abstract, drop every stored bid\u002Fask\n\n  ## \u003Cfile.py>\n  ...\n  ```\n\n# Function Interface\n\n- For each file, list its module-level functions only, i.e., functions\n  defined outside any class (methods are already covered under Class\n  Interface)\n- Include underscore-prefixed module-level functions when they hold core\n  logic; skip trivial one-line helpers\n- One line per function: full signature and a description under 20 words\n\n- E.g.,\n  ```markdown\n  # Function Interface\n\n  ## `research\u002FNoesis\u002Fbatch_call_auction.py`\n\n  - `_match_orders_in_tier(c_level: str, bids: List[Bid], asks: List[Ask]) -> TierClearResult`\n    - Matches one tier's bids\u002Fasks and computes uniform clearing price\n\n  ## \u003Cfile.py>\n  ...\n  ```\n\n# Function Relationship\n\n- For each module-level function from `# Function Interface`, list who calls\n  it and what it calls, scoped to the files read\n- Skip trivial one-line method delegations already implied by\n  `# Class Relationships` (e.g., a method that only forwards to a stored\n  collaborator)\n\n- E.g.,\n  ```markdown\n  # Function Relationship\n\n  ## `research\u002FNoesis\u002Fbatch_call_auction.py`\n\n  - `_match_orders_in_tier()`\n    - Called by: `OrderBook.clear_round()`, once per capability tier\n    - Calls: no other functions in this file\n\n  ## \u003Cfile.py>\n  ...\n  ```\n\n# Class Relationships\n\n- Print the relationships among all classes across all files read, grouped\n  under level-2 headers\n- Typical groups are `## Inheritance`, `## Composition`, `## Uses`, and\n  `## Mirrors` (schema correspondence with no code dependency); only include a\n  group if it applies, and only list classes for which the relationship holds\n\n- E.g.,\n  ```markdown\n  # Class Relationships\n\n  ## Inheritance\n\n  - `OrderBookStore`\n    - `_InMemoryOrderBookStore` from `batch_call_auction.py`\n    - `PostgresOrderBookStore` from `postgres_store.py`\n\n  ## Composition\n\n  - `OrderBook`\n    - Holds one `OrderBookStore`\n\n  ## Uses\n\n  - `OrderBook.clear_round()` calls `_match_orders_in_tier()` per capability\n    tier and returns `Dict[str, TierClearResult]`\n  - `TierClearResult` aggregates `List[Fill]`\n\n  ## Mirrors\n\n  - `BidRequest` (API layer) \u003C-> `Bid` (matching engine): same fields, no\n    shared code\n  ```\n\n# Conventions\n\n- Follow `.claude\u002Fskills\u002Fmarkdown.rules.md` and `.claude\u002Fskills\u002Ftext.rules.md`\n  for markdown and text formatting\n- Keep every bullet description under 20 words\n- Enclose class names, function names, and file paths in backticks\n\n# Constraints\n\n- Do not modify the Python files being read\n- Base every bullet strictly on what the code shows; do not invent classes,\n  functions, or relationships that are not present\n- Never print an empty section header or a placeholder bullet (`-` with no\n  text)\n\n# Verification\n\n- Every class and function name mentioned exists in a file that was read\n- Every file that was read appears as a level-2 header in each section where\n  it has content, using the same path used to read it\n- No section or subsection is present with zero bullets under it\n- Every description is under 20 words\n",{"model":36,"description":7},"sonnet","master","39143a859859181eff7e774457997b5278fd9e99",".claude\u002Fskills\u002Freadme.explain_code",170,"https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers","https:\u002F\u002Fcausify.ai","https:\u002F\u002Fgithub.com\u002Fcausify-ai","2026-11-02 02:09:15",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add causify-ai\u002Fhelpers --skill readme.explain_code",{"tool":51,"command":52},"bunx","bunx skills add causify-ai\u002Fhelpers --skill readme.explain_code",{"tool":54,"command":55},"pnpm","pnpm dlx skills add causify-ai\u002Fhelpers --skill readme.explain_code","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Freadme.explain_code\u002FSKILL.md",true,[59,65,69,73,77],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"README.md","REFERENCE","参考文档",6609,"https:\u002F\u002Fgithub.com\u002FBigdrops\u002Fbigdrops-app\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fprofessional-communication\u002FREADME.md",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"references\u002Femail-templates.md",5783,"https:\u002F\u002Fgithub.com\u002FBigdrops\u002Fbigdrops-app\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fprofessional-communication\u002Freferences\u002Femail-templates.md",{"path":70,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002Fjargon-simplification.md",8071,"https:\u002F\u002Fgithub.com\u002FBigdrops\u002Fbigdrops-app\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fprofessional-communication\u002Freferences\u002Fjargon-simplification.md",{"path":74,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Fmeeting-structures.md",8834,"https:\u002F\u002Fgithub.com\u002FBigdrops\u002Fbigdrops-app\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fprofessional-communication\u002Freferences\u002Fmeeting-structures.md",{"path":78,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fremote-async-communication.md",8075,"https:\u002F\u002Fgithub.com\u002FBigdrops\u002Fbigdrops-app\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fprofessional-communication\u002Freferences\u002Fremote-async-communication.md",[82,99,112,123,132,141],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":91,"publishedAt":31},"01M6C9ZMM0XSXCHHABMJ9XB1JB","tutorial_in_60_mins.propagate_docker_changes","Sync tutorial and class-project Docker files to match project_template","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.propagate_docker_changes\u002FSKILL.md",[88],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[92,93,94,95,96,97,98],"tutorial in 60 mins propagate docker changes","tutorial","docker","files","haiku","template","sync",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":106,"publishedAt":31},"01M6C9ZJK8QJ9FNCY39WVF3GMG","tutorial_in_60_mins.merge_markdown","Merge the content of a markdown file into a Jupyter notebook","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.merge_markdown\u002FSKILL.md",[105],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[107,108,93,30,109,96,29,110,111],"merge","tutorial in 60 mins merge markdown","jupyter","content","jupyter notebook",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":31},"01M6C9ZFYK13ZCT1E8BEEC4NG4","tutorial_in_60_mins.format","Format a directory to follow the \"Learn X in 60 Minutes\" tutorial conventions","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.format\u002FSKILL.md",[],[119,93,120,121,122,96],"tutorial in 60 mins format","format","directory","learn",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":31},"01M6C9ZDKXSBKNKX7M3X4W38G5","tutorial_in_60_mins.create","Create a tutorial directory for the Learn X in 60 Minutes conventions","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.create\u002FSKILL.md",[],[130,93,131,121,122],"tutorial in 60 mins create","create",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"publishedAt":31},"01M6BZS5Z0QE03WRS1TM3XJEY9","todo.reorg_in_progress","Reorganize ai_task_queue.md so in-progress tasks, not-started tasks, and mislabeled topic headers sit under the right H1 stage","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftodo.reorg_in_progress\u002FSKILL.md",[],[139,140],"todo reorg in progress","tasks",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":31},"01M6BZS4CQZ6KK2KQ26SVB7QCS","todo.reorg_headers","Reorganize ai_task_queue.md .md so every H2 topic matches ALL TOPICS and every H3 task sits under the right topic, keeping its H1 stage","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftodo.reorg_headers\u002FSKILL.md",[],[148],"todo reorg headers"]