Not in the top 1,000 by GitHub stars

DeliciousBuding/xiaohongshu-skill

Xiaohongshu & RedNote skill for AI agents — search, read notes, publish, and run approval-gated automation with Python Playwright and clean JSON output.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → afa96802d3e6

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit afa96802d3e61cdd5e7bd7b37ec59182bbe07d37

git clone --filter=blob:none --no-checkout https://github.com/DeliciousBuding/xiaohongshu-skill.git .hotskills/deliciousbuding-xiaohongshu-skill && git -C .hotskills/deliciousbuding-xiaohongshu-skill checkout --detach afa96802d3e61cdd5e7bd7b37ec59182bbe07d37 # Copy each selected skill directory from .hotskills/deliciousbuding-xiaohongshu-skill into .agents/skills/<skill-name>/
43GitHub stars
0stars in 7 days
1skill in this repository
0commits in 30 days

Heat

0.3
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Oct 25, 202643

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

xiaohongshu-skill

When your agent uses it

小红书 / Xiaohongshu / RedNote AI Agent Skill。用 Python Playwright 搜索和读取内容、管理登录会话、发布图文/视频/长文、评论、点赞和收藏;默认输出 JSON,任何写操作都必须先获得用户确认。用户提到 xiaohongshu、小红书、rednote、小红书搜索、发到小红书、小红书笔记分析、小红书运营或小红书自动化时触发。

What it loads into context

Frontmatter

194 tokens

Always available to the agent

SKILL.md

1,020 tokens

When the skill is activated

Reference documents

12,218 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 安全规则
  2. 任务路由
  3. 初始化
  4. 只读示例
  5. 发布语义
  6. 输出和错误
  7. 本地状态

Scripts executed separately

  • Dockerfile
  • make.ps1
  • scripts/__init__.py
  • scripts/__main__.py
  • scripts/_logging.py
  • scripts/_utils.py
  • scripts/client.py
  • scripts/comment.py
  • scripts/docs_check.py
  • scripts/explore.py
  • scripts/feed.py
  • scripts/interact.py
  • scripts/login.py
  • scripts/output_contracts.py
  • scripts/profiles.py
  • scripts/publish.py
  • scripts/quality.py
  • scripts/release_check.py
  • scripts/search.py
  • scripts/selectors.py
  • scripts/session_store.py
  • scripts/site_check.py
  • scripts/skill_check.py
  • scripts/sop.py
  • scripts/strategy.py
  • scripts/templates.py
  • scripts/test_gate.py
  • scripts/user.py
  • tests/__init__.py
  • tests/conftest.py
  • tests/live/test_readonly_smoke.py
  • tests/test_cli.py
  • tests/test_client.py
  • tests/test_comment.py
  • tests/test_docs_check.py
  • tests/test_explore.py
  • tests/test_interact.py
  • tests/test_live_gate.py
  • tests/test_login.py
  • tests/test_output_contracts.py
  • tests/test_profiles.py
  • tests/test_publish.py
  • tests/test_publish_validation.py
  • tests/test_quality.py
  • tests/test_release_check.py
  • tests/test_search.py
  • tests/test_selectors.py
  • tests/test_session_store.py
  • tests/test_site_check.py
  • tests/test_skill_check.py
  • tests/test_sop.py
  • tests/test_strategy.py
  • tests/test_templates.py
  • tests/test_test_harness.py
  • tests/test_user.py

Files

  • .coderabbit.yamlasset278 bytes
  • .dockerignoreasset212 bytes
  • .env.exampleasset356 bytes
  • .github/CODEOWNERSasset19 bytes
  • .github/ISSUE_TEMPLATE/bug_report.mddoc473 bytes
  • .github/ISSUE_TEMPLATE/feature_request.mddoc261 bytes
  • .github/PULL_REQUEST_TEMPLATE.mddoc572 bytes
  • .github/workflows/ci.ymlasset3,358 bytes
  • .github/workflows/pages.ymlasset900 bytes
  • .github/workflows/release.ymlasset2,704 bytes
  • .gitignoreasset422 bytes
  • AGENTS.mddoc2,052 bytes
  • CHANGELOG.mddoc2,640 bytes
  • CONTRIBUTING.mddoc2,787 bytes
  • Dockerfileruns738 bytes
  • LICENSEasset11,350 bytes
  • README.mddoc5,669 bytes
  • README_EN.mddoc5,935 bytes
  • SKILL.mdcore3,695 bytes
  • SKILL.mdcore3,695 bytes
  • SKILL.mdcore3,695 bytes
  • SKILL.mdcore3,695 bytes
  • SKILL.mdcore3,695 bytes
  • SKILL.mdcore3,695 bytes
  • THIRD_PARTY_NOTICES.mddoc795 bytes
  • data/.gitkeepasset0 bytes
  • docker-compose.ymlasset284 bytes
  • docs/API.mddoc4,380 bytes
  • docs/ARCHITECTURE.mddoc3,950 bytes
  • docs/INSTALL.mddoc4,043 bytes
  • docs/INTEGRATIONS.mddoc2,653 bytes
  • docs/PAGES.mddoc2,227 bytes
  • docs/REFERENCE.mddoc1,863 bytes
  • docs/RELEASING.mddoc1,788 bytes
  • docs/ROADMAP.mddoc1,360 bytes
  • docs/SECURITY.mddoc2,708 bytes
  • examples/README.mddoc460 bytes
  • examples/claude-code/README.mddoc1,325 bytes
  • examples/cursor/README.mddoc791 bytes
  • examples/demo/publish-ready.jsonasset429 bytes
  • examples/demo/search-result.jsonasset382 bytes
  • examples/n8n/README.mddoc660 bytes
  • examples/openclaw/README.mddoc625 bytes
  • licenses/Apache-2.0.txtdoc11,339 bytes
  • make.ps1runs279 bytes
  • pyproject.tomlasset1,772 bytes
  • scripts/__init__.pyruns699 bytes
  • scripts/__main__.pyruns29,830 bytes
  • scripts/_logging.pyruns775 bytes
  • scripts/_utils.pyruns1,909 bytes
  • scripts/client.pyruns21,247 bytes
  • scripts/comment.pyruns19,572 bytes
  • scripts/docs_check.pyruns4,017 bytes
  • scripts/explore.pyruns4,563 bytes
  • scripts/feed.pyruns8,268 bytes
  • scripts/interact.pyruns10,873 bytes
  • scripts/login.pyruns11,303 bytes
  • scripts/output_contracts.pyruns9,498 bytes
  • scripts/profiles.pyruns3,146 bytes
  • scripts/publish.pyruns53,185 bytes
  • scripts/quality.pyruns2,477 bytes
  • scripts/release_check.pyruns1,620 bytes
  • scripts/search.pyruns14,595 bytes
  • scripts/selectors.pyruns10,810 bytes
  • scripts/session_store.pyruns2,945 bytes
  • scripts/site_check.pyruns8,471 bytes
  • scripts/skill_check.pyruns1,117 bytes
  • scripts/sop.pyruns14,235 bytes
  • scripts/strategy.pyruns10,315 bytes
  • scripts/templates.pyruns11,352 bytes
  • scripts/test_gate.pyruns669 bytes
  • scripts/user.pyruns8,470 bytes
  • site/demo.htmlasset4,985 bytes
  • site/index.htmlasset29,763 bytes
  • site/llms-full.txtdoc4,086 bytes
  • site/llms.txtdoc2,947 bytes
  • site/og-image.pngasset58,649 bytes
  • site/og-image.svgasset3,442 bytes
  • site/robots.txtdoc239 bytes
  • site/sitemap.xmlasset616 bytes
  • tests/__init__.pyruns0 bytes
  • tests/conftest.pyruns1,959 bytes
  • tests/live/test_readonly_smoke.pyruns807 bytes
  • tests/test_cli.pyruns8,258 bytes
  • tests/test_client.pyruns13,605 bytes
  • tests/test_comment.pyruns6,351 bytes
  • tests/test_docs_check.pyruns1,765 bytes
  • tests/test_explore.pyruns3,401 bytes
  • tests/test_interact.pyruns7,024 bytes
  • tests/test_live_gate.pyruns766 bytes
  • tests/test_login.pyruns7,576 bytes
  • tests/test_output_contracts.pyruns3,113 bytes
  • tests/test_profiles.pyruns2,647 bytes
  • tests/test_publish.pyruns24,318 bytes
  • tests/test_publish_validation.pyruns8,579 bytes
  • tests/test_quality.pyruns1,256 bytes
  • tests/test_release_check.pyruns1,014 bytes
  • tests/test_search.pyruns3,156 bytes
  • tests/test_selectors.pyruns5,619 bytes
  • tests/test_session_store.pyruns2,524 bytes
  • tests/test_site_check.pyruns3,577 bytes
  • tests/test_skill_check.pyruns846 bytes
  • tests/test_sop.pyruns7,449 bytes
  • tests/test_strategy.pyruns6,059 bytes
  • tests/test_templates.pyruns6,557 bytes
  • tests/test_test_harness.pyruns267 bytes
  • tests/test_user.pyruns1,994 bytes
  • uv.lockasset47,891 bytes
Read SKILL.md

# 小红书 Skill

通过 JSON CLI 操作小红书浏览器会话。执行入口统一为:

```bash
cd {baseDir}
uv run python -m scripts <command>
```

## 安全规则

发布、评论、回复、点赞、收藏、取消点赞和取消收藏会改变真实账号状态。执行前必须:

1. 展示目标账号、内容、媒体和操作类型。
View the complete source on GitHub

Skills included

  • xiaohongshu-skill

Repository facts

License
Apache-2.0
Created
Feb 23, 2026
Last pushed
Aug 24, 2026
Forks
9
Open issues
1
Project activity
Slowing

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 7, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 5 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 590 signals by file

.dockerignore

  • Access to secretsline 13
    [Credential-related source omitted]

.gitignore

  • Access to secretsline 36
    [Credential-related source omitted]

CHANGELOG.md

  • Network accessline 3
    All notable changes to this project are documented here. This project uses [Conventional Commits](https://www.conventionalcommits.org/) and keeps one
  • Network accessline 4
    [Conventional Commits](https://www.conventionalcommits.org/) and keeps one
  • Network accessline 7
    The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
  • Network accessline 62
    [1.5.0]: https://github.com/DeliciousBuding/xiaohongshu-skill/compare/v1.4.0...v1.5.0
  • Network accessline 63
    [1.4.0]: https://github.com/DeliciousBuding/xiaohongshu-skill/compare/v1.3.0...v1.4.0
  • Network accessline 64
    [1.3.0]: https://github.com/DeliciousBuding/xiaohongshu-skill/releases/tag/v1.3.0

CONTRIBUTING.md

  • Network accessline 8
    git clone https://github.com/DeliciousBuding/xiaohongshu-skill.git

Dockerfile

  • Executable scriptline 1
    Executable file

LICENSE

  • Network accessline 1
    Apache License                            Version 2.0, January 2004                         http://www.apache.org/licenses/
  • Network accessline 3
    http://www.apache.org/licenses/
  • Network accessline 195
    http://www.apache.org/licenses/LICENSE-2.0

README.md

  • Network accessline 3
    [![CI](https://github.com/DeliciousBuding/xiaohongshu-skill/actions/workflows/ci.yml/badge.svg)](https://github.com/DeliciousBuding/xiaohongshu-skill/actions/workflows/ci.yml)
  • Network accessline 4
    [![Release](https://img.shields.io/github/v/release/DeliciousBuding/xiaohongshu-skill)](https://github.com/DeliciousBuding/xiaohongshu-skill/releases)
  • Network accessline 5
    [![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue)](https://www.python.org/)
  • Network accessline 6
    [![License](https://img.shields.io/badge/license-Apache_2.0-blue)](LICENSE)
  • Network accessline 49
    git clone https://github.com/DeliciousBuding/xiaohongshu-skill.git
  • Network accessline 65
    pip install git+https://github.com/DeliciousBuding/xiaohongshu-skill.git

README_EN.md

  • Network accessline 3
    [![CI](https://github.com/DeliciousBuding/xiaohongshu-skill/actions/workflows/ci.yml/badge.svg)](https://github.com/DeliciousBuding/xiaohongshu-skill/actions/workflows/ci.yml)
  • Network accessline 4
    [![Release](https://img.shields.io/github/v/release/DeliciousBuding/xiaohongshu-skill)](https://github.com/DeliciousBuding/xiaohongshu-skill/releases)
  • Network accessline 5
    [![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue)](https://www.python.org/)
  • Network accessline 6
    [![License](https://img.shields.io/badge/license-Apache_2.0-blue)](LICENSE)
  • Network accessline 49
    git clone https://github.com/DeliciousBuding/xiaohongshu-skill.git
  • Network accessline 65
    pip install git+https://github.com/DeliciousBuding/xiaohongshu-skill.git
  • Access to secretsline 133
    [Credential-related source omitted]

docs/INSTALL.md

  • Network accessline 17
    git clone https://github.com/DeliciousBuding/xiaohongshu-skill.git
  • Network accessline 40
    pip install git+https://github.com/DeliciousBuding/xiaohongshu-skill.git

docs/PAGES.md

  • Network accessline 62
    - `programmingLanguage`: `Python` - `license`: `Apache-2.0` - `codeRepository`: `https://github.com/DeliciousBuding/xiaohongshu-skill`
  • Network accessline 63
    - `license`: `Apache-2.0` - `codeRepository`: `https://github.com/DeliciousBuding/xiaohongshu-skill` - `sameAs`: GitHub, skills.sh, and `llms.txt`
  • Network accessline 64
    - `codeRepository`: `https://github.com/DeliciousBuding/xiaohongshu-skill`

docs/REFERENCE.md

  • Access to secretsline 23
    [Credential-related source omitted]

examples/claude-code/README.md

  • Network accessline 10
    git clone https://github.com/DeliciousBuding/xiaohongshu-skill.git
  • Network accessline 32
    git clone https://github.com/DeliciousBuding/xiaohongshu-skill.git ~/.claude/skills/xiaohongshu-skill

examples/cursor/README.md

  • Network accessline 8
    git clone https://github.com/DeliciousBuding/xiaohongshu-skill.git

examples/demo/search-result.json

  • Network accessline 12
    "collected_count": "42",       "comment_count": "9",       "cover_url": "https://example.com/demo-cover.jpg"
  • Network accessline 13
    "comment_count": "9",       "cover_url": "https://example.com/demo-cover.jpg"     }
  • Network accessline 14
    "cover_url": "https://example.com/demo-cover.jpg"

examples/openclaw/README.md

  • Network accessline 12
    git clone https://github.com/DeliciousBuding/xiaohongshu-skill.git ~/.openclaw/skills/xiaohongshu-skill

licenses/Apache-2.0.txt

  • Network accessline 1
    Apache License                            Version 2.0, January 2004                         http://www.apache.org/licenses/
  • Network accessline 3
    http://www.apache.org/licenses/
  • Network accessline 195
    http://www.apache.org/licenses/LICENSE-2.0

make.ps1

  • Executable scriptline 1
    Executable file

pyproject.toml

  • Network accessline 45
    [project.urls] Homepage = "https://github.com/DeliciousBuding/xiaohongshu-skill"
  • Network accessline 46
    Homepage = "https://github.com/DeliciousBuding/xiaohongshu-skill"
  • Network accessline 47
    Issues = "https://github.com/DeliciousBuding/xiaohongshu-skill/issues"

scripts/__init__.py

  • Executable scriptline 1
    Executable file

scripts/__main__.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Access to secretsline 62
    [Credential-related source omitted]
  • Access to secretsline 72
    [Credential-related source omitted]

scripts/_logging.py

  • Executable scriptline 1
    Executable file

scripts/_utils.py

  • Executable scriptline 1
    Executable file
  • Network accessline 33
    [Credential-related source omitted]

scripts/client.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 261
    [Credential-related source omitted]
  • Access to secretsline 326
    [Credential-related source omitted]
  • Network accessline 513
    self.navigate("https://www.xiaohongshu.com/explore")
  • Network accessline 531
    self.navigate("https://www.xiaohongshu.com/explore")

scripts/comment.py

  • Executable scriptline 1
    Executable file
  • Network accessline 419
    page = self.client.page         print("导航到通知页...", file=sys.stderr)         self.client.navigate("https://www.xiaohongshu.com/notification")
  • Network accessline 420
    print("导航到通知页...", file=sys.stderr)         self.client.navigate("https://www.xiaohongshu.com/notification")         time.sleep(3)
  • Network accessline 421
    self.client.navigate("https://www.xiaohongshu.com/notification")

scripts/docs_check.py

  • Executable scriptline 1
    Executable file

scripts/explore.py

  • Executable scriptline 1
    Executable file
  • Network accessline 18
    EXPLORE_URL = "https://www.xiaohongshu.com/explore"
  • Network accessline 48
    // 提取每条笔记的关键信息             return JSON.stringify(flat.map(function(item) {                 var nc = item.noteCard || (item.model_type === 'note' ? item : {});
  • Network accessline 49
    return JSON.stringify(flat.map(function(item) {                 var nc = item.noteCard || (item.model_type === 'note' ? item : {});                 if (item.noteCard) nc = item.noteCard;
  • Network accessline 50
    var nc = item.noteCard || (item.model_type === 'note' ? item : {});
  • Network accessline 51
    if (item.noteCard) nc = item.noteCard;

scripts/feed.py

  • Executable scriptline 1
    Executable file

scripts/interact.py

  • Executable scriptline 1
    Executable file

scripts/login.py

  • Executable scriptline 1
    Executable file
  • Network accessline 28
    CREATOR_PUBLISH_URL = "https://creator.xiaohongshu.com/publish/publish?source=official"
  • Network accessline 47
    if navigate:             self.client.navigate("https://www.xiaohongshu.com/explore")
  • Network accessline 48
    self.client.navigate("https://www.xiaohongshu.com/explore")
  • Network accessline 75
    url = (self.client.page.url or "").lower()         return url.startswith("https://creator.xiaohongshu.com")
  • Network accessline 76
    return url.startswith("https://creator.xiaohongshu.com")
  • Network accessline 121
    client.navigate("https://www.xiaohongshu.com/explore")
  • Possible obfuscationline 149
    img_data = base64.b64decode(qrcode_src)

scripts/output_contracts.py

  • Executable scriptline 1
    Executable file

scripts/profiles.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 40
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]

scripts/publish.py

  • Executable scriptline 1
    Executable file
  • Network accessline 22
    PUBLISH_URL = "https://creator.xiaohongshu.com/publish/publish?source=official"

scripts/quality.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 74
    [Credential-related source omitted]

scripts/release_check.py

  • Executable scriptline 1
    Executable file

scripts/search.py

  • Executable scriptline 1
    Executable file
  • Network accessline 59
    "source": "web_explore_feed",         })         return f"https://www.xiaohongshu.com/search_result?{params}"
  • Network accessline 61
    return f"https://www.xiaohongshu.com/search_result?{params}"
  • Network accessline 178
    return JSON.stringify(data.slice(0, 50).map(item => {                 const nc = item.noteCard || {};
  • Network accessline 179
    const nc = item.noteCard || {};

scripts/selectors.py

  • Executable scriptline 1
    Executable file

scripts/session_store.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 85
    [Credential-related source omitted]

scripts/site_check.py

  • Executable scriptline 1
    Executable file
  • Network accessline 101
    if not _software_application_has_same_as(parser.json_ld, "https://www.skills.sh/deliciousbuding/xiaohongshu-skill"):
  • Network accessline 139
    "xiaohongshu-skill",             "npx skills add DeliciousBuding/xiaohongshu-skill",             "https://www.skills.sh/deliciousbuding/xiaohongshu-skill",
  • Network accessline 140
    "npx skills add DeliciousBuding/xiaohongshu-skill",             "https://www.skills.sh/deliciousbuding/xiaohongshu-skill",         ):
  • Network accessline 141
    "https://www.skills.sh/deliciousbuding/xiaohongshu-skill",
  • Network accessline 172
    if sitemap_path.is_file():         sitemap_text = sitemap_path.read_text(encoding="utf-8")         if "https://deliciousbuding.github.io/xiaohongshu-skill/" not in sitemap_text:
  • Network accessline 173
    sitemap_text = sitemap_path.read_text(encoding="utf-8")         if "https://deliciousbuding.github.io/xiaohongshu-skill/" not in sitemap_text:             findings.append("sitemap.xml: missing Pages canonical URL")
  • Network accessline 174
    if "https://deliciousbuding.github.io/xiaohongshu-skill/" not in sitemap_text:
  • Network accessline 175
    findings.append("sitemap.xml: missing Pages canonical URL")         if "https://deliciousbuding.github.io/xiaohongshu-skill/demo.html" not in sitemap_text:             findings.append("sitemap.xml: missing demo page URL")
  • Network accessline 176
    if "https://deliciousbuding.github.io/xiaohongshu-skill/demo.html" not in sitemap_text:
  • Network accessline 177
    findings.append("sitemap.xml: missing demo page URL")         if "https://deliciousbuding.github.io/xiaohongshu-skill/llms-full.txt" not in sitemap_text:             findings.append("sitemap.xml: missing llms-full URL")
  • Network accessline 178
    if "https://deliciousbuding.github.io/xiaohongshu-skill/llms-full.txt" not in sitemap_text:

scripts/skill_check.py

  • Executable scriptline 1
    Executable file

scripts/sop.py

  • Executable scriptline 1
    Executable file

scripts/strategy.py

  • Executable scriptline 1
    Executable file

scripts/templates.py

  • Executable scriptline 1
    Executable file

scripts/test_gate.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]

scripts/user.py

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    [Credential-related source omitted]
  • Network accessline 26
    [Credential-related source omitted]
  • Network accessline 27
    return f"https://www.xiaohongshu.com/user/profile/{user_id}"
  • Network accessline 70
    // 提取每条笔记的关键信息,包含置顶标记和排序所需字段             return JSON.stringify(flat.map(function(item) {                 var nc = item.noteCard || {};
  • Network accessline 71
    return JSON.stringify(flat.map(function(item) {                 var nc = item.noteCard || {};                 var info = nc.interactInfo || {};
  • Network accessline 72
    var nc = item.noteCard || {};
  • Network accessline 186
    print("导航到首页获取个人信息...", file=sys.stderr)         client.navigate("https://www.xiaohongshu.com/explore")
  • Network accessline 187
    client.navigate("https://www.xiaohongshu.com/explore")

site/demo.html

  • Network accessline 7
    <meta name="description" content="Public demo outputs for xiaohongshu-skill: search JSON, publish draft JSON, and agent contracts.">   <meta name="robots" content="index,follow">   <link rel="canonical" href="https://deliciousbuding.github.
  • Network accessline 8
    <meta name="robots" content="index,follow">   <link rel="canonical" href="https://deliciousbuding.github.io/xiaohongshu-skill/demo.html">   <style>
  • Network accessline 9
    <link rel="canonical" href="https://deliciousbuding.github.io/xiaohongshu-skill/demo.html">
  • Network accessline 70
    ] }</code></pre>         <a href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/examples/demo/search-result.json">View fixture →</a>
  • Network accessline 71
    }</code></pre>         <a href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/examples/demo/search-result.json">View fixture →</a>       </section>
  • Network accessline 72
    <a href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/examples/demo/search-result.json">View fixture →</a>
  • Network accessline 81
    "message": "Draft is ready and waiting at the publish button." }</code></pre>         <a href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/examples/demo/publish-ready.json">View fixture →</a>
  • Network accessline 82
    }</code></pre>         <a href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/examples/demo/publish-ready.json">View fixture →</a>       </section>
  • Network accessline 83
    <a href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/examples/demo/publish-ready.json">View fixture →</a>
  • Network accessline 89
    xiaohongshu-skill selectors --owner=publish python -m pytest tests/live -q -m live</code></pre>         <a href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/API.md">Command reference →</a>
  • Network accessline 90
    python -m pytest tests/live -q -m live</code></pre>         <a href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/API.md">Command reference →</a>       </section>
  • Network accessline 91
    <a href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/API.md">Command reference →</a>

site/index.html

  • Network accessline 17
    <meta property="og:title" content="Xiaohongshu Skill for AI Agents">   <meta property="og:description" content="Search, read, publish, and operate Xiaohongshu & RedNote through Python Playwright. Approval-gated writes, clean JSON, AgentSkil
  • Network accessline 18
    <meta property="og:description" content="Search, read, publish, and operate Xiaohongshu & RedNote through Python Playwright. Approval-gated writes, clean JSON, AgentSkill-ready.">   <meta property="og:url" content="https://deliciousbuding.g
  • Network accessline 19
    <meta property="og:url" content="https://deliciousbuding.github.io/xiaohongshu-skill/">
  • Network accessline 20
    <meta property="og:image" content="https://deliciousbuding.github.io/xiaohongshu-skill/og-image.png">
  • Network accessline 28
    <meta name="twitter:title" content="Xiaohongshu Skill for AI Agents">   <meta name="twitter:description" content="Python Playwright AgentSkill for search, note details, publishing, and agent-safe Xiaohongshu automation.">   <meta name="twit
  • Network accessline 30
    <meta name="twitter:image" content="https://deliciousbuding.github.io/xiaohongshu-skill/og-image.png">
  • Network accessline 32
    <link rel="canonical" href="https://deliciousbuding.github.io/xiaohongshu-skill/">
  • Network accessline 34
    <link rel="alternate" type="text/plain" href="llms.txt" title="LLM summary for xiaohongshu-skill">   <link rel="alternate" type="text/plain" href="llms-full.txt" title="Full LLM reference for xiaohongshu-skill">   <link rel="icon" type="ima
  • Network accessline 36
    <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><rect width='100' height='100' rx='24' fill='%23FF2442'/><text x='50' y='68' font-size='52' text-anchor='middle' fi
  • Network accessline 39
    [   {     "@context": "https://schema.org",
  • Network accessline 40
    {     "@context": "https://schema.org",     "@type": "SoftwareApplication",
  • Network accessline 41
    "@context": "https://schema.org",
  • Network accessline 42
    "@type": "SoftwareApplication",     "@id": "https://deliciousbuding.github.io/xiaohongshu-skill/#app",     "name": "xiaohongshu-skill",
  • Network accessline 43
    "@id": "https://deliciousbuding.github.io/xiaohongshu-skill/#app",
  • Network accessline 54
    "programmingLanguage": "Python",     "softwareRequirements": "Python 3.10+, Playwright Chromium",     "license": "https://opensource.org/licenses/Apache-2.0",
  • Network accessline 55
    "softwareRequirements": "Python 3.10+, Playwright Chromium",     "license": "https://opensource.org/licenses/Apache-2.0",     "isAccessibleForFree": true,
  • Network accessline 56
    "license": "https://opensource.org/licenses/Apache-2.0",
  • Network accessline 65
    "Session isolation via profiles"     ],     "codeRepository": "https://github.com/DeliciousBuding/xiaohongshu-skill",
  • Network accessline 66
    ],     "codeRepository": "https://github.com/DeliciousBuding/xiaohongshu-skill",     "url": "https://deliciousbuding.github.io/xiaohongshu-skill/",
  • Network accessline 67
    "codeRepository": "https://github.com/DeliciousBuding/xiaohongshu-skill",
  • Network accessline 68
    "url": "https://deliciousbuding.github.io/xiaohongshu-skill/",
  • Network accessline 69
    "downloadUrl": "https://github.com/DeliciousBuding/xiaohongshu-skill",
  • Network accessline 70
    "sameAs": [       "https://github.com/DeliciousBuding/xiaohongshu-skill",       "https://www.skills.sh/deliciousbuding/xiaohongshu-skill",
  • Network accessline 71
    "https://github.com/DeliciousBuding/xiaohongshu-skill",
  • Network accessline 72
    "https://www.skills.sh/deliciousbuding/xiaohongshu-skill",
  • Network accessline 73
    "https://clawhub.ai/skills/xiaohongshu-skill",
  • Network accessline 74
    "https://deliciousbuding.github.io/xiaohongshu-skill/llms.txt"
  • Network accessline 82
    },   {     "@context": "https://schema.org",
  • Network accessline 83
    {     "@context": "https://schema.org",     "@type": "Organization",
  • Network accessline 84
    "@context": "https://schema.org",
  • Network accessline 85
    "@type": "Organization",     "@id": "https://github.com/DeliciousBuding",     "name": "DeliciousBuding",
  • Network accessline 86
    "@id": "https://github.com/DeliciousBuding",
  • Network accessline 87
    "name": "DeliciousBuding",     "url": "https://github.com/DeliciousBuding"   },
  • Network accessline 88
    "url": "https://github.com/DeliciousBuding"
  • Network accessline 89
    },   {     "@context": "https://schema.org",
  • Network accessline 90
    {     "@context": "https://schema.org",     "@type": "WebSite",
  • Network accessline 91
    "@context": "https://schema.org",
  • Network accessline 92
    "@type": "WebSite",     "@id": "https://deliciousbuding.github.io/xiaohongshu-skill/#website",     "name": "xiaohongshu-skill",
  • Network accessline 93
    "@id": "https://deliciousbuding.github.io/xiaohongshu-skill/#website",
  • Network accessline 94
    "name": "xiaohongshu-skill",     "url": "https://deliciousbuding.github.io/xiaohongshu-skill/",     "about": {
  • Network accessline 95
    "url": "https://deliciousbuding.github.io/xiaohongshu-skill/",
  • Network accessline 96
    "about": {       "@id": "https://deliciousbuding.github.io/xiaohongshu-skill/#app"     },
  • Network accessline 97
    "@id": "https://deliciousbuding.github.io/xiaohongshu-skill/#app"
  • Network accessline 98
    },     "publisher": {       "@id": "https://github.com/DeliciousBuding"
  • Network accessline 99
    "publisher": {       "@id": "https://github.com/DeliciousBuding"     }
  • Network accessline 100
    "@id": "https://github.com/DeliciousBuding"
  • Network accessline 370
    <a href="#docs">Docs</a>         </div>         <a class="nav-cta" href="https://github.com/DeliciousBuding/xiaohongshu-skill" target="_blank" rel="noopener">
  • Network accessline 371
    </div>         <a class="nav-cta" href="https://github.com/DeliciousBuding/xiaohongshu-skill" target="_blank" rel="noopener">           <svg width="15" height="15" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M8 0C3.5
  • Network accessline 372
    <a class="nav-cta" href="https://github.com/DeliciousBuding/xiaohongshu-skill" target="_blank" rel="noopener">
  • Network accessline 388
    <div class="hero-actions">               <a class="btn btn-primary" href="#install">Get started</a>               <a class="btn btn-ghost" href="https://github.com/DeliciousBuding/xiaohongshu-skill" target="_blank" rel="noopener">View sourc
  • Network accessline 389
    <a class="btn btn-primary" href="#install">Get started</a>               <a class="btn btn-ghost" href="https://github.com/DeliciousBuding/xiaohongshu-skill" target="_blank" rel="noopener">View source</a>             </div>
  • Network accessline 390
    <a class="btn btn-ghost" href="https://github.com/DeliciousBuding/xiaohongshu-skill" target="_blank" rel="noopener">View source</a>
  • Network accessline 467
    <div class="cmd-row"><code>npx skills add DeliciousBuding/xiaohongshu-skill</code><button class="copy-btn" type="button">Copy</button></div>             <div class="cmd-row"><code>clawhub install xiaohongshu-skill</code><button class="copy-
  • Network accessline 468
    <div class="cmd-row"><code>clawhub install xiaohongshu-skill</code><button class="copy-btn" type="button">Copy</button></div>             <div class="cmd-row"><code>pip install git+https://github.com/DeliciousBuding/xiaohongshu-skill.git</c
  • Network accessline 469
    <div class="cmd-row"><code>pip install git+https://github.com/DeliciousBuding/xiaohongshu-skill.git</code><button class="copy-btn" type="button">Copy</button></div>
  • Network accessline 470
    <div class="cmd-row"><code>git clone https://github.com/DeliciousBuding/xiaohongshu-skill.git &lt;skills-dir&gt;/xiaohongshu-skill</code><button class="copy-btn" type="button">Copy</button></div>
  • Network accessline 527
    <a class="doc" href="llms.txt"><div class="t">llms.txt</div><div class="d">Machine-readable project summary.</div></a>           <a class="doc" href="llms-full.txt"><div class="t">llms-full.txt</div><div class="d">Full LLM reference.</div><
  • Network accessline 528
    <a class="doc" href="llms-full.txt"><div class="t">llms-full.txt</div><div class="d">Full LLM reference.</div></a>           <a class="doc" href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/INSTALL.md"><div class="t"
  • Network accessline 529
    <a class="doc" href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/INSTALL.md"><div class="t">Install</div><div class="d">Setup for every platform.</div></a>
  • Network accessline 530
    <a class="doc" href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/API.md"><div class="t">Commands</div><div class="d">CLI reference.</div></a>
  • Network accessline 531
    <a class="doc" href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/INTEGRATIONS.md"><div class="t">Integrations</div><div class="d">Claude Code, Codex, n8n, more.</div></a>
  • Network accessline 532
    <a class="doc" href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/SECURITY.md"><div class="t">Security</div><div class="d">Session and account safety.</div></a>
  • Network accessline 533
    <a class="doc" href="https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/REFERENCE.md"><div class="t">Reference map</div><div class="d">Architecture and upstream attribution.</div></a>
  • Network accessline 534
    <a class="doc" href="https://github.com/DeliciousBuding/xiaohongshu-skill/tree/main/examples"><div class="t">Examples</div><div class="d">Runnable snippets and fixtures.</div></a>
  • Network accessline 543
    <div>© 2025–2026 DeliciousBuding · Apache-2.0</div>         <div>           <a href="https://github.com/DeliciousBuding/xiaohongshu-skill" target="_blank" rel="noopener">GitHub</a>
  • Network accessline 544
    <div>           <a href="https://github.com/DeliciousBuding/xiaohongshu-skill" target="_blank" rel="noopener">GitHub</a>           <span style="margin:0 10px;opacity:.4">·</span>
  • Network accessline 545
    <a href="https://github.com/DeliciousBuding/xiaohongshu-skill" target="_blank" rel="noopener">GitHub</a>
  • Network accessline 546
    <span style="margin:0 10px;opacity:.4">·</span>           <a href="https://clawhub.ai/skills/xiaohongshu-skill" target="_blank" rel="noopener">ClawHub</a>           <span style="margin:0 10px;opacity:.4">·</span>
  • Network accessline 547
    <a href="https://clawhub.ai/skills/xiaohongshu-skill" target="_blank" rel="noopener">ClawHub</a>
  • Network accessline 548
    <span style="margin:0 10px;opacity:.4">·</span>           <a href="https://www.skills.sh/deliciousbuding/xiaohongshu-skill" target="_blank" rel="noopener">skills.sh</a>         </div>
  • Network accessline 549
    <a href="https://www.skills.sh/deliciousbuding/xiaohongshu-skill" target="_blank" rel="noopener">skills.sh</a>

site/llms-full.txt

  • Network accessline 6
    - Category: AgentSkill and Python Playwright CLI - Domain: Xiaohongshu, RedNote, 小红书, xhs, RED - Repository: https://github.com/DeliciousBuding/xiaohongshu-skill
  • Network accessline 7
    - Domain: Xiaohongshu, RedNote, 小红书, xhs, RED - Repository: https://github.com/DeliciousBuding/xiaohongshu-skill - Pages: https://deliciousbuding.github.io/xiaohongshu-skill/
  • Network accessline 8
    - Repository: https://github.com/DeliciousBuding/xiaohongshu-skill
  • Network accessline 9
    - Pages: https://deliciousbuding.github.io/xiaohongshu-skill/
  • Network accessline 10
    - skills.sh: https://www.skills.sh/deliciousbuding/xiaohongshu-skill
  • Network accessline 20
    npx skills add DeliciousBuding/xiaohongshu-skill clawhub install xiaohongshu-skill pip install git+https://github.com/DeliciousBuding/xiaohongshu-skill.git
  • Network accessline 21
    clawhub install xiaohongshu-skill pip install git+https://github.com/DeliciousBuding/xiaohongshu-skill.git playwright install chromium
  • Network accessline 22
    pip install git+https://github.com/DeliciousBuding/xiaohongshu-skill.git
  • Network accessline 98
    - Install: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/INSTALL.md
  • Network accessline 99
    - Commands: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/API.md
  • Network accessline 100
    - Integrations: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/INTEGRATIONS.md
  • Network accessline 101
    - Security: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/SECURITY.md
  • Network accessline 102
    - Reference map: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/REFERENCE.md
  • Network accessline 103
    - Roadmap: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/ROADMAP.md
  • Network accessline 104
    - Examples: https://github.com/DeliciousBuding/xiaohongshu-skill/tree/main/examples
  • Network accessline 105
    - Demo outputs: https://deliciousbuding.github.io/xiaohongshu-skill/demo.html

site/llms.txt

  • Network accessline 5
    Repository: https://github.com/DeliciousBuding/xiaohongshu-skill
  • Network accessline 6
    Pages: https://deliciousbuding.github.io/xiaohongshu-skill/
  • Network accessline 7
    skills.sh: https://www.skills.sh/deliciousbuding/xiaohongshu-skill
  • Network accessline 12
    npx skills add DeliciousBuding/xiaohongshu-skill pip install git+https://github.com/DeliciousBuding/xiaohongshu-skill.git
  • Network accessline 13
    pip install git+https://github.com/DeliciousBuding/xiaohongshu-skill.git
  • Network accessline 55
    - skills.sh: https://www.skills.sh/deliciousbuding/xiaohongshu-skill
  • Network accessline 56
    - Full LLM reference: https://deliciousbuding.github.io/xiaohongshu-skill/llms-full.txt
  • Network accessline 57
    - Command reference: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/API.md
  • Network accessline 58
    - Install: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/INSTALL.md
  • Network accessline 59
    - Integrations: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/INTEGRATIONS.md
  • Network accessline 60
    - Security: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/SECURITY.md
  • Network accessline 61
    - Reference project map: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/REFERENCE.md
  • Network accessline 62
    - Roadmap: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/docs/ROADMAP.md
  • Network accessline 63
    - Examples: https://github.com/DeliciousBuding/xiaohongshu-skill/tree/main/examples
  • Network accessline 67
    - Search JSON: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/examples/demo/search-result.json
  • Network accessline 68
    - Publish draft JSON: https://github.com/DeliciousBuding/xiaohongshu-skill/blob/main/examples/demo/publish-ready.json
  • Network accessline 69
    - Demo page: https://deliciousbuding.github.io/xiaohongshu-skill/demo.html

site/og-image.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="630" viewBox="0 0 1200 630" role="img" aria-labelledby="t d">

site/robots.txt

  • Network accessline 4
    Sitemap: https://deliciousbuding.github.io/xiaohongshu-skill/sitemap.xml
  • Network accessline 5
    LLM: https://deliciousbuding.github.io/xiaohongshu-skill/llms.txt
  • Network accessline 6
    LLM-Full: https://deliciousbuding.github.io/xiaohongshu-skill/llms-full.txt

site/sitemap.xml

  • Network accessline 1
    <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  • Network accessline 2
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  • Network accessline 3
    <url>     <loc>https://deliciousbuding.github.io/xiaohongshu-skill/</loc>     <lastmod>2026-08-24</lastmod>
  • Network accessline 4
    <loc>https://deliciousbuding.github.io/xiaohongshu-skill/</loc>
  • Network accessline 6
    </url>   <url>     <loc>https://deliciousbuding.github.io/xiaohongshu-skill/llms.txt</loc>
  • Network accessline 7
    <url>     <loc>https://deliciousbuding.github.io/xiaohongshu-skill/llms.txt</loc>     <lastmod>2026-08-24</lastmod>
  • Network accessline 8
    <loc>https://deliciousbuding.github.io/xiaohongshu-skill/llms.txt</loc>
  • Network accessline 10
    </url>   <url>     <loc>https://deliciousbuding.github.io/xiaohongshu-skill/llms-full.txt</loc>
  • Network accessline 11
    <url>     <loc>https://deliciousbuding.github.io/xiaohongshu-skill/llms-full.txt</loc>     <lastmod>2026-08-24</lastmod>
  • Network accessline 12
    <loc>https://deliciousbuding.github.io/xiaohongshu-skill/llms-full.txt</loc>
  • Network accessline 14
    </url>   <url>     <loc>https://deliciousbuding.github.io/xiaohongshu-skill/demo.html</loc>
  • Network accessline 15
    <url>     <loc>https://deliciousbuding.github.io/xiaohongshu-skill/demo.html</loc>     <lastmod>2026-08-24</lastmod>
  • Network accessline 16
    <loc>https://deliciousbuding.github.io/xiaohongshu-skill/demo.html</loc>

tests/__init__.py

  • Executable scriptline 1
    Executable file

tests/conftest.py

  • Executable scriptline 1
    Executable file
  • Network accessline 34
    page = MagicMock()     page.url = "https://www.xiaohongshu.com/explore"
  • Network accessline 35
    page.url = "https://www.xiaohongshu.com/explore"

tests/live/test_readonly_smoke.py

  • Executable scriptline 1
    Executable file

tests/test_cli.py

  • Executable scriptline 1
    Executable file
  • Network accessline 50
    mock_search_module.search.side_effect = CaptchaError(             url="https://www.xiaohongshu.com/captcha",
  • Network accessline 51
    url="https://www.xiaohongshu.com/captcha",

tests/test_client.py

  • Executable scriptline 1
    Executable file
  • Network accessline 115
    client = self._make_client_with_url("https://www.xiaohongshu.com/explore")
  • Network accessline 120
    client = self._make_client_with_url(             "https://www.xiaohongshu.com/website-login/captcha?type=slide"
  • Network accessline 121
    "https://www.xiaohongshu.com/website-login/captcha?type=slide"
  • Network accessline 127
    client = self._make_client_with_url(             "https://www.xiaohongshu.com/security-verification?redirect=xxx"
  • Network accessline 128
    "https://www.xiaohongshu.com/security-verification?redirect=xxx"
  • Network accessline 134
    client = self._make_client_with_url(             "https://www.xiaohongshu.com/some-page",
  • Network accessline 135
    "https://www.xiaohongshu.com/some-page",
  • Network accessline 152
    client = XiaohongshuClient()         client.page = MagicMock()         client.page.url = "https://www.xiaohongshu.com/captcha"
  • Network accessline 153
    client.page = MagicMock()         client.page.url = "https://www.xiaohongshu.com/captcha"         client._navigate_count = 5
  • Network accessline 154
    client.page.url = "https://www.xiaohongshu.com/captcha"
  • Network accessline 297
    err = CaptchaError(url="https://example.com/captcha", message="test")
  • Network accessline 298
    assert err.captcha_url == "https://example.com/captcha"
  • Network accessline 303
    err = CaptchaError(url="https://example.com/captcha")
  • Network accessline 304
    assert "https://example.com/captcha" in str(err)

tests/test_comment.py

  • Executable scriptline 1
    Executable file
  • Network accessline 104
    assert "abc123" in url         assert "token456" in url         assert url.startswith("https://www.xiaohongshu.com/explore/")
  • Network accessline 106
    assert url.startswith("https://www.xiaohongshu.com/explore/")

tests/test_docs_check.py

  • Executable scriptline 1
    Executable file

tests/test_explore.py

  • Executable scriptline 1
    Executable file
  • Network accessline 29
    "interactInfo": {"likedCount": "100"},                     "user": {"nickname": "用户1", "userId": "uid1"},                     "cover": {"urlDefault": "http://img.com/1.jpg"},
  • Network accessline 30
    "user": {"nickname": "用户1", "userId": "uid1"},                     "cover": {"urlDefault": "http://img.com/1.jpg"},                 },
  • Network accessline 31
    "cover": {"urlDefault": "http://img.com/1.jpg"},
  • Network accessline 98
    assert ExploreAction.EXPLORE_URL == "https://www.xiaohongshu.com/explore"

tests/test_interact.py

  • Executable scriptline 1
    Executable file

tests/test_live_gate.py

  • Executable scriptline 1
    Executable file

tests/test_login.py

  • Executable scriptline 1
    Executable file
  • Network accessline 19
    def make_login_action(url="https://www.xiaohongshu.com/explore"):
  • Network accessline 96
    assert action.check_login_status(navigate=True) == (False, None)     action.client.navigate.assert_called_once_with("https://www.xiaohongshu.com/explore")
  • Network accessline 97
    action.client.navigate.assert_called_once_with("https://www.xiaohongshu.com/explore")
  • Network accessline 100
    def test_check_creator_login_status_detects_login_page():     action = make_login_action(url="https://creator.xiaohongshu.com/login")
  • Network accessline 101
    action = make_login_action(url="https://creator.xiaohongshu.com/login")
  • Network accessline 105
    def test_check_creator_login_status_detects_captcha_page():     action = make_login_action(url="https://creator.xiaohongshu.com/captcha")
  • Network accessline 106
    action = make_login_action(url="https://creator.xiaohongshu.com/captcha")
  • Network accessline 110
    def test_check_creator_login_status_detects_ready_visible():     action = make_login_action(url="https://creator.xiaohongshu.com/publish/publish")
  • Network accessline 111
    action = make_login_action(url="https://creator.xiaohongshu.com/publish/publish")
  • Network accessline 122
    action = make_login_action(url="https://creator.xiaohongshu.com/")
  • Network accessline 130
    def test_check_creator_login_status_unknown_offsite_is_not_ready():     action = make_login_action(url="https://example.com/publish/publish")
  • Network accessline 131
    action = make_login_action(url="https://example.com/publish/publish")
  • Network accessline 139
    def test_check_creator_login_navigates_to_publish_page():     action = make_login_action(url="https://creator.xiaohongshu.com/login")
  • Network accessline 140
    action = make_login_action(url="https://creator.xiaohongshu.com/login")

tests/test_output_contracts.py

  • Executable scriptline 1
    Executable file

tests/test_profiles.py

  • Executable scriptline 1
    Executable file

tests/test_publish.py

  • Executable scriptline 1
    Executable file
  • Network accessline 31
    self.action._navigate_to_publish()         self.client.navigate.assert_called_once_with(             "https://creator.xiaohongshu.com/publish/publish?source=official"
  • Network accessline 32
    self.client.navigate.assert_called_once_with(             "https://creator.xiaohongshu.com/publish/publish?source=official"         )
  • Network accessline 33
    "https://creator.xiaohongshu.com/publish/publish?source=official"
  • Network accessline 485
    def test_url_leaving_publish_flow_confirms_publish(self):         self.client.page.url = "https://creator.xiaohongshu.com/creator/home"
  • Network accessline 486
    self.client.page.url = "https://creator.xiaohongshu.com/creator/home"
  • Network accessline 500
    ("url", "signal"),         [             ("https://creator.xiaohongshu.com/login", "login_redirect"),
  • Network accessline 501
    [             ("https://creator.xiaohongshu.com/login", "login_redirect"),             ("https://www.xiaohongshu.com/website-login/captcha", "captcha_redirect"),
  • Network accessline 502
    ("https://creator.xiaohongshu.com/login", "login_redirect"),
  • Network accessline 503
    ("https://www.xiaohongshu.com/website-login/captcha", "captcha_redirect"),
  • Network accessline 554
    "url",         [             "https://example.com/success",
  • Network accessline 555
    [             "https://example.com/success",             "https://creator.xiaohongshu.com/error",
  • Network accessline 556
    "https://example.com/success",
  • Network accessline 557
    "https://creator.xiaohongshu.com/error",
  • Network accessline 558
    "https://creator.xiaohongshu.com/404",

tests/test_publish_validation.py

  • Executable scriptline 1
    Executable file

tests/test_quality.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 33
    [Credential-related source omitted]

tests/test_release_check.py

  • Executable scriptline 1
    Executable file

tests/test_search.py

  • Executable scriptline 1
    Executable file
  • Network accessline 22
    assert "keyword=%E6%B5%8B%E8%AF%95" in url         assert "source=web_explore_feed" in url         assert url.startswith("https://www.xiaohongshu.com/search_result?")
  • Network accessline 24
    assert url.startswith("https://www.xiaohongshu.com/search_result?")

tests/test_selectors.py

  • Executable scriptline 1
    Executable file

tests/test_session_store.py

  • Executable scriptline 1
    Executable file

tests/test_site_check.py

  • Executable scriptline 1
    Executable file
  • Network accessline 33
    <title>Xiaohongshu Skill for AI Agents</title>     <meta name="description" content="Xiaohongshu RedNote AI agent Playwright AgentSkill">     <link rel="canonical" href="https://example.com/">
  • Network accessline 34
    <meta name="description" content="Xiaohongshu RedNote AI agent Playwright AgentSkill">     <link rel="canonical" href="https://example.com/">   </head>
  • Network accessline 35
    <link rel="canonical" href="https://example.com/">
  • Network accessline 51
    <title>Xiaohongshu Skill for AI Agents</title>     <meta name="description" content="Xiaohongshu RedNote AI agent Playwright AgentSkill">     <meta property="og:image" content="https://example.com/og-image.svg">
  • Network accessline 52
    <meta name="description" content="Xiaohongshu RedNote AI agent Playwright AgentSkill">     <meta property="og:image" content="https://example.com/og-image.svg">     <link rel="canonical" href="https://example.com/">
  • Network accessline 53
    <meta property="og:image" content="https://example.com/og-image.svg">
  • Network accessline 54
    <link rel="canonical" href="https://example.com/">
  • Network accessline 55
    <link rel="alternate" type="text/plain" href="llms.txt">     <link rel="alternate" type="text/plain" href="llms-full.txt">     <script type="application/ld+json">{"@type":"SoftwareApplication","sameAs":["https://www.skills.sh/deliciousbudin
  • Network accessline 56
    <link rel="alternate" type="text/plain" href="llms-full.txt">     <script type="application/ld+json">{"@type":"SoftwareApplication","sameAs":["https://www.skills.sh/deliciousbuding/xiaohongshu-skill"]}</script>   </head>
  • Network accessline 57
    <script type="application/ld+json">{"@type":"SoftwareApplication","sameAs":["https://www.skills.sh/deliciousbuding/xiaohongshu-skill"]}</script>
  • Network accessline 73
    <title>Xiaohongshu Skill for AI Agents</title>     <meta name="description" content="Xiaohongshu RedNote AI agent Playwright AgentSkill">     <meta property="og:image" content="https://example.com/og-image.svg">
  • Network accessline 74
    <meta name="description" content="Xiaohongshu RedNote AI agent Playwright AgentSkill">     <meta property="og:image" content="https://example.com/og-image.svg">     <link rel="canonical" href="https://example.com/">
  • Network accessline 75
    <meta property="og:image" content="https://example.com/og-image.svg">
  • Network accessline 76
    <link rel="canonical" href="https://example.com/">
  • Network accessline 77
    <link rel="alternate" type="text/plain" href="llms.txt">     <script type="application/ld+json">{"@type":"SoftwareApplication","sameAs":["https://www.skills.sh/deliciousbuding/xiaohongshu-skill"]}</script>   </head>
  • Network accessline 78
    <script type="application/ld+json">{"@type":"SoftwareApplication","sameAs":["https://www.skills.sh/deliciousbuding/xiaohongshu-skill"]}</script>

tests/test_skill_check.py

  • Executable scriptline 1
    Executable file

tests/test_sop.py

  • Executable scriptline 1
    Executable file

tests/test_strategy.py

  • Executable scriptline 1
    Executable file

tests/test_templates.py

  • Executable scriptline 1
    Executable file

tests/test_test_harness.py

  • Executable scriptline 1
    Executable file

tests/test_user.py

  • Executable scriptline 1
    Executable file

uv.lock

  • Network accessline 10
    name = "click" version = "8.4.2" source = { registry = "https://pypi.org/simple" }
  • Network accessline 11
    version = "8.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 12
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 14
    { name = "colorama", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/76/d4/81420972a676e8ffea40450d8c8c92943e7218a78fe9b64359836cc9876b/click-8.4.2.tar.gz", hash = "sha256:9a6cea6e60b17ebe0a4
  • Network accessline 15
    ] sdist = { url = "https://files.pythonhosted.org/packages/76/d4/81420972a676e8ffea40450d8c8c92943e7218a78fe9b64359836cc9876b/click-8.4.2.tar.gz", hash = "sha256:9a6cea6e60b17ebe0a44c5cc636d94f09bd66142c1cd7d8b4cd731c4917a15f6", size = 3380
  • Network accessline 16
    sdist = { url = "https://files.pythonhosted.org/packages/76/d4/81420972a676e8ffea40450d8c8c92943e7218a78fe9b64359836cc9876b/click-8.4.2.tar.gz", hash = "sha256:9a6cea6e60b17ebe0a44c5cc636d94f09bd66142c1cd7d8b4cd731c4917a15f6", size = 338000
  • Network accessline 17
    wheels = [     { url = "https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl", hash = "sha256:e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b7
  • Network accessline 18
    { url = "https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl", hash = "sha256:e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b76", size = 1192
  • Network accessline 22
    name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" }
  • Network accessline 23
    version = "0.4.6" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb
  • Network accessline 24
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 25
    sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 276
  • Network accessline 26
    wheels = [     { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57a
  • Network accessline 27
    { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size
  • Network accessline 31
    name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" }
  • Network accessline 32
    version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 33
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 35
    { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6
  • Network accessline 36
    ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", si
  • Network accessline 37
    sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size
  • Network accessline 38
    wheels = [     { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577
  • Network accessline 39
    { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", si
  • Network accessline 43
    name = "greenlet" version = "3.5.5" source = { registry = "https://pypi.org/simple" }
  • Network accessline 44
    version = "3.5.5" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/0b/d8/7cc97c142388aef03f622e001c572c4f84e9252a439549d483f555771970/greenlet-3.5.5.tar.gz", hash = "sha256:adb4bae02
  • Network accessline 45
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 46
    sdist = { url = "https://files.pythonhosted.org/packages/0b/d8/7cc97c142388aef03f622e001c572c4f84e9252a439549d483f555771970/greenlet-3.5.5.tar.gz", hash = "sha256:adb4bae02e91a8e863e48b177e4014bdcac8a6b5e047ea1df687a61534b85e6c", size = 207
  • Network accessline 47
    wheels = [     { url = "https://files.pythonhosted.org/packages/07/67/07ecd6d85c0f253363cbc4ac9e7dd048ca571a267fbccfea084d6009ac3b/greenlet-3.5.5-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:816230f469381ad0a43abc9fa8dda5a699e32f
  • Network accessline 48
    { url = "https://files.pythonhosted.org/packages/07/67/07ecd6d85c0f253363cbc4ac9e7dd048ca571a267fbccfea084d6009ac3b/greenlet-3.5.5-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:816230f469381ad0a43abc9fa8dda5a699e32fb78958dde32ded9
  • Network accessline 49
    { url = "https://files.pythonhosted.org/packages/24/35/426733bc24247ee17bb76df90f550c299ff5f8572b2bdd7cacb5c53fd994/greenlet-3.5.5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5433cf291e0ef9114bd14d0d824db
  • Network accessline 50
    { url = "https://files.pythonhosted.org/packages/9c/dc/17d3a5acceb2fd0bbc9682a228117b719cdfb68085e6dbb33fa325755f27/greenlet-3.5.5-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:19d59f068887d8c5907fc177f27683
  • Network accessline 51
    { url = "https://files.pythonhosted.org/packages/74/3f/b31e6bd6adb8f80492efb6a47e8f9cd0e7335db5aac2795b1876d5afcfee/greenlet-3.5.5-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:86c5113d698cb8d927b2750bb1f1d59eef
  • Network accessline 52
    { url = "https://files.pythonhosted.org/packages/51/91/00b3c0566316c6f383ea16ee05388ec4f57f6e0afa49e72ae471eda8c47f/greenlet-3.5.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ff00e12102358292087274dfb166913
  • Network accessline 53
    { url = "https://files.pythonhosted.org/packages/18/5e/58c561efde575c4ca070030e2e0513e8d1b07b76d8a2d84a9bcef1becd42/greenlet-3.5.5-cp310-cp310-manylinux_2_39_riscv64.whl", hash = "sha256:c69bed34470abfcd456984fdadaa18e62169af4480335c45f3c32
  • Network accessline 54
    { url = "https://files.pythonhosted.org/packages/3c/78/52de4f7ac9152ad1dbc8f437895c1e573d30ee1e1427e0f91a280e2417b6/greenlet-3.5.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:523bb8e27614d77101ea7a8cf59f8d91219b72d5c29f6a038c92b5
  • Network accessline 55
    { url = "https://files.pythonhosted.org/packages/f6/ff/c3855a00c2417e8f61c7b9f0bc4f8f599c6928f5c15681ad251e78a91e05/greenlet-3.5.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f1e2db190db51c17433eee424803818cf0670bf049d9cfe0dd07be1
  • Network accessline 56
    { url = "https://files.pythonhosted.org/packages/70/21/d29ff6a79dbd1ec1fe74c155d25d4c5a85e221d6b9ffc2cc7a709e7c8c39/greenlet-3.5.5-cp310-cp310-win_amd64.whl", hash = "sha256:740e544169527b82695ce76af2f7ad6f030904658f2f3921a1d245771fb88cfc",
  • Network accessline 57
    { url = "https://files.pythonhosted.org/packages/4e/a3/07297917485ee2ca85bc3c8dc6ed85ad3fffcf424047fba62671dba68e97/greenlet-3.5.5-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:be63afcbbccfad3dd95a1ba12ada84dab2ef32031973d80b5b92d
  • Network accessline 58
    { url = "https://files.pythonhosted.org/packages/db/51/6f732f9314cda54c5fd48a7620c7160f4f286967e8045ad94b9d66ce80b7/greenlet-3.5.5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a268024ce2d7d2b04694bf1594058
  • Network accessline 59
    { url = "https://files.pythonhosted.org/packages/d8/c0/b27589e25d220289edcd4d582b2b17b83058d1a56d53d971b6ea1a34f10d/greenlet-3.5.5-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:35cbb8bf55ace57fbccb4fb8622c45
  • Network accessline 60
    { url = "https://files.pythonhosted.org/packages/39/82/5c873dbb4fb001d22fbbd50e80d4c1b0181ddae106856132160f84b94e88/greenlet-3.5.5-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:abc8bc8d9f935cd685457545b6a53863a8
  • Network accessline 61
    { url = "https://files.pythonhosted.org/packages/51/2d/f2c928218ac52f26d7a2c188c171d1b7e728b23782cb3347e7b4fce1493a/greenlet-3.5.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74cc6df89ec5302337adc9cf096221cb
  • Network accessline 62
    { url = "https://files.pythonhosted.org/packages/70/12/f7df98e72a8eb4a7edfec5a08d6d1a4ab53a52c95ba0b2ea6c10b8dd9bd0/greenlet-3.5.5-cp311-cp311-manylinux_2_39_riscv64.whl", hash = "sha256:3134291427bb0f3526e9d90311988caf336eb43730e95244997a4
  • Network accessline 63
    { url = "https://files.pythonhosted.org/packages/3e/4a/92fc51d5d35912f4f06eec037ba347985defd0be47463a010a325634d9d2/greenlet-3.5.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6d9b454c5fc48aeaa7c4337813dbf513a6870468e426438a04d922
  • Network accessline 64
    { url = "https://files.pythonhosted.org/packages/ac/58/ed98b80ac5738c149a5258544843c45601ade1fd70f61740cdaead6351b3/greenlet-3.5.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03551ed792cb1b4fc0277a0c60dfd8c343894a0ba06fe60dcd22f56
  • Network accessline 65
    { url = "https://files.pythonhosted.org/packages/d8/be/b582ceb80cefdf9d8da34078714e4b12b3d16f509dee0f65e40a5cc8fc7d/greenlet-3.5.5-cp311-cp311-win_amd64.whl", hash = "sha256:ab3df3dffb58bf70564e93a5cec7941e4d9faa5a36cc4234a10d3131afe04f53",
  • Network accessline 66
    { url = "https://files.pythonhosted.org/packages/4d/18/5313c4c58598c38b0373c013e4ff2b3e6d258aaaa338f373335ebecdaddd/greenlet-3.5.5-cp311-cp311-win_arm64.whl", hash = "sha256:2b70a766135540c472ac1393d57c2e1b4a2eb85bf526a1e41e6d096173a8cee5",
  • Network accessline 67
    { url = "https://files.pythonhosted.org/packages/2e/7e/9ecd0285e3153532ae07aeb88063c43c72b4221cf0d4d123b02f3682e3ff/greenlet-3.5.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:49520f0c95a48b42cf55414b8e8479beb274ea70431afc33e3f79
  • Network accessline 68
    { url = "https://files.pythonhosted.org/packages/35/73/60e4bbcc89252037b18087f2ec16405d5b2d5be42dde191bbf3667e96102/greenlet-3.5.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55272212cbc5f43d1d723725ab931f
  • Network accessline 69
    { url = "https://files.pythonhosted.org/packages/a4/17/cd5134be659cd4a443e7a61ae670dabec165a814c51162916d637b6dd38e/greenlet-3.5.5-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655bca754a2ef4efcb0eb48a94d3f4
  • Network accessline 70
    { url = "https://files.pythonhosted.org/packages/9b/30/87c212b5c684d0e72974f1063b7a9687631e8985902c06e1016542c874e7/greenlet-3.5.5-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ca5d6ae0739e5764f2cfcfaa562ac5a99
  • Network accessline 71
    { url = "https://files.pythonhosted.org/packages/78/ac/5c5b959999b6f09c3026b5dfe171575bc3121c5236ce74f495096f25b203/greenlet-3.5.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:147b25a42e5ca5be3d42356e8f608b37
  • Network accessline 72
    { url = "https://files.pythonhosted.org/packages/63/2c/eb487fafc9f50ffff2b1e0b697f70fb34bf150821c08ab225aacf5583a7e/greenlet-3.5.5-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:1b5ed9162c0c098e0bbc2cf88a94f433c1b8926f831745252e099
  • Network accessline 73
    { url = "https://files.pythonhosted.org/packages/c8/8b/6acf112ed8aee499f25b4d6949820fb02ac950ff9c1f3d793bd5be0599f2/greenlet-3.5.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:27493374cff1d1b7919dc8126547f2aea582737e3046147b434b1e
  • Network accessline 74
    { url = "https://files.pythonhosted.org/packages/b8/d7/734e5f198888876b42d7616ff6644c075baf6b8a2412deadd6b0e1b8b20c/greenlet-3.5.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:12e2ee66c2aba86133f10fd99d6a8856c6d351ffb7be0e4d52ef2cc
  • Network accessline 75
    { url = "https://files.pythonhosted.org/packages/de/30/1f42b88dc587b5899ee50616ad56ee40cafaf225df4fb829f10183c62a5c/greenlet-3.5.5-cp312-cp312-win_amd64.whl", hash = "sha256:49ddacd36af37735fab103846f4ee4d18a492dde72730d1699c0c8ebe30d9f18",
  • Network accessline 76
    { url = "https://files.pythonhosted.org/packages/76/e5/4dee4d8d2e603fe5fdd7b444e63219f7b9bd852c60c6214511c7157cbe88/greenlet-3.5.5-cp312-cp312-win_arm64.whl", hash = "sha256:5f1b1ff4828cdc1aba4266aff814085d04a1d07959287219af021b838b265d52",
  • Network accessline 77
    { url = "https://files.pythonhosted.org/packages/fb/3d/8cef5f724ec0d4add2af8961d504535ec60c3cca9e464f6d03bdba29d85b/greenlet-3.5.5-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:b79fd2a5bc099b5e744f34c4c9a58954a5f4cb7529fb4b6e84460
  • Network accessline 78
    { url = "https://files.pythonhosted.org/packages/88/4b/8e7aa3f514273aecff30a16ab1bac09ff54cfc7e6860fdd8058c37ff2499/greenlet-3.5.5-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:634cf15a233a949136879dd388e25d
  • Network accessline 79
    { url = "https://files.pythonhosted.org/packages/85/48/4e95e9dd5a8a397dc6a6345dd7f1935113d0fca4f85e89d3976da9cd988d/greenlet-3.5.5-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:499adea519f748407fc6806d20eeda
  • Network accessline 80
    { url = "https://files.pythonhosted.org/packages/0e/84/eaa476d6bf3816828d0d70e80dcc36bf30a058233bd889e707e693f6e860/greenlet-3.5.5-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f7278591501941bb2456af102bb9cd59aa
  • Network accessline 81
    { url = "https://files.pythonhosted.org/packages/89/5d/398a1c71fa7a277deeb376c999979de6786f08fc2d5747a0b9d6e11738dd/greenlet-3.5.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2eabb980975cba5b93a95f6f69287d05
  • Network accessline 82
    { url = "https://files.pythonhosted.org/packages/d0/f2/0cc2849ede68579291e9c59b3ab6ec1958f98681cca5b14d8fc75bf674a4/greenlet-3.5.5-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:4dfc7c4470354e7b09184d1a3a985761053a2fd694ddb5b5c8024
  • Network accessline 83
    { url = "https://files.pythonhosted.org/packages/04/1b/745450fc5ea9e0cb17d840d248f284db3363de736d362c7d2d883e3eadba/greenlet-3.5.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:03115c2e0a371999bf8ae616aa8d653f96641d4705c457aebaa187
  • Network accessline 84
    { url = "https://files.pythonhosted.org/packages/d4/29/d51b296e3191bb15d3d81ec375af1909e4466c0f395d744ed475801798a9/greenlet-3.5.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4441153ffba21b90d3ca89fe3d31f5c093ae6c0bf0cfdfc98f54cde
  • Network accessline 85
    { url = "https://files.pythonhosted.org/packages/12/63/369f1a1625e64e9e31df3963c6044056e3fdfa3fa3fdba3c54ffefa6e987/greenlet-3.5.5-cp313-cp313-win_amd64.whl", hash = "sha256:95c5b1f4b3a193f8a0c2de4bfdcb48d119f7f1063941f1de1f2168051b3e52dd",
  • Network accessline 86
    { url = "https://files.pythonhosted.org/packages/45/78/649cb5c09d4d81f6dd1444e75474a7206784743283a21d24171562ac4899/greenlet-3.5.5-cp313-cp313-win_arm64.whl", hash = "sha256:1af90aa4bc129883b340cdd6957a3bc74f60528a4993bbd1f53aaebe1d9981cc",
  • Network accessline 87
    { url = "https://files.pythonhosted.org/packages/7f/8c/080e881fa2be95ff1ddbd6994b2bab3b1a78df3b3fcab39306011764fcc7/greenlet-3.5.5-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d4a389a852e392a6366058651a20fa5ba40d979865aa81bea2ccb
  • Network accessline 88
    { url = "https://files.pythonhosted.org/packages/25/cc/0ac614e6586c0e42d4cc281a5819150f4f43685744a4c5ff77139286409d/greenlet-3.5.5-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70b157cd319873e8b544ddc2de158f
  • Network accessline 89
    { url = "https://files.pythonhosted.org/packages/5e/b9/6808725354be8ad305dfe5172377664fc9642d4fc043be246b3314cf4482/greenlet-3.5.5-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8bdfd1424abcf26832961e766570ca
  • Network accessline 90
    { url = "https://files.pythonhosted.org/packages/eb/52/f005d579acde46c3d1cc3cab1c9f3d5708c8a3006a4120e8cf5da801afe9/greenlet-3.5.5-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d98ef6f92e67c6dbf299dbfd8facc1b0d2
  • Network accessline 91
    { url = "https://files.pythonhosted.org/packages/42/2e/40c509967da7f254680826a2fa0dd22138ec79946c70b97542d74cde8b43/greenlet-3.5.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:182de51c6b572a705f2fafaab2e783bc
  • Network accessline 92
    { url = "https://files.pythonhosted.org/packages/c4/8a/a75f8a2bdcef3c358a3147cdc9db3aa83755f0a038f766ab0bedb66f512c/greenlet-3.5.5-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:159df1942d88e8f784cbb38d6f18bdb365cd11319cfbb3e89623d
  • Network accessline 93
    { url = "https://files.pythonhosted.org/packages/2d/22/c3c2eee4a8fe191d6d1d183086c56133d646024e3d70bfd414829f64560b/greenlet-3.5.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8fec3f165dfe332e490c3247c0f6c23b0bfc45f06496ad7f00ddb0
  • Network accessline 94
    { url = "https://files.pythonhosted.org/packages/f7/87/25babd09b94cb1f03e71db815fde463f0262e40cfbd953d58a8d77311351/greenlet-3.5.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c6ce25fee6cabc8bf22cb8b52e642cbb821be5b9aec8094d07ff033
  • Network accessline 95
    { url = "https://files.pythonhosted.org/packages/2e/3d/5cc9701117ea4dc0eb7bf1f4f9b7888a6e2e5277ddfae095805ace50f2b6/greenlet-3.5.5-cp314-cp314-win_amd64.whl", hash = "sha256:7dffc5c859fe6059974df1e37d7923d654a83e2ae18fdd616994270e001115e1",
  • Network accessline 96
    { url = "https://files.pythonhosted.org/packages/a7/6b/594fa2de7fae7629168a404a4305d7d7e31a5742c50a801b1839543cb93d/greenlet-3.5.5-cp314-cp314-win_arm64.whl", hash = "sha256:5e2afcfc4d4305dd715809b03da5cbe437c8984f61d8917751eb5fe4aefa3e07",
  • Network accessline 97
    { url = "https://files.pythonhosted.org/packages/24/e0/50cd600b469e5734c72709b6b1838b6bc63f307b573c772c3132d6ecfe92/greenlet-3.5.5-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:0e5a7de979d764aea1f5b6e95cf92b5b37741b9823702041f34b
  • Network accessline 98
    { url = "https://files.pythonhosted.org/packages/75/a3/77acd66dfc6387b5219b2080806c0cabb73c10eb1bb44b413c40a62015ba/greenlet-3.5.5-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fef01bd457f11fc158b130ca0027a
  • Network accessline 99
    { url = "https://files.pythonhosted.org/packages/b9/71/0d178142dca3ec19f46fb2212ae73d30ad53b9d548dc64804086033a7089/greenlet-3.5.5-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5173a72310725a74afc82c164f0e5
  • Network accessline 100
    { url = "https://files.pythonhosted.org/packages/aa/ac/0d7887aa4bbfc9eba075cc428244dfc96f623478454d5ec81180d0d6bd5a/greenlet-3.5.5-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5e9ec2e7c98e895fcea0c5cc57b2606cf
  • Network accessline 101
    { url = "https://files.pythonhosted.org/packages/6e/31/46eb8567302eaf787abf88d09df014e14ae3baf460af1b8b0efdbd3efcd5/greenlet-3.5.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44f08341873200ba8a60a8bc14ace3d
  • Network accessline 102
    { url = "https://files.pythonhosted.org/packages/4f/18/8d58ba1c429b0383e3219a3d0e0bba241d0444d8ed05b73349953c7d7c7b/greenlet-3.5.5-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:102817506f6090b5176c746a82603341a549b40e5c3d5b72a4c6
  • Network accessline 103
    { url = "https://files.pythonhosted.org/packages/a3/e9/b88bbf5b29970cb84172dc2c32aa3e5e579ceb94c808e81c826454138850/greenlet-3.5.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d246c0db9a2513cd45f019ba178ea4d4d4705bd210ee465e2c15d
  • Network accessline 104
    { url = "https://files.pythonhosted.org/packages/6d/8c/7631ed29cc6f0392f11830076e172ce4885e70b0bc2c1bce1731176d4b4e/greenlet-3.5.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:72507285b5caa1d17904a3f7c322ca780823a54170a0e04ec3f37b
  • Network accessline 105
    { url = "https://files.pythonhosted.org/packages/da/0f/f7dd935f9c4cb1be49098770587f54d8a78518e55c89bce86c4fb4109057/greenlet-3.5.5-cp314-cp314t-win_amd64.whl", hash = "sha256:7805655781fb8f28a55d05fe57ed61f5f10f1892fb587673e3bb5264f28041f0"
  • Network accessline 106
    { url = "https://files.pythonhosted.org/packages/b7/e5/681b01f8fbc1b55232822f99e8f8afeb78a55a7c76a7bf9dbdc7ccb03a6d/greenlet-3.5.5-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:c0db80fcd5b8aece93f66c64f78a786bbb6b96c5fe63ef5a5a458
  • Network accessline 107
    { url = "https://files.pythonhosted.org/packages/11/f2/69b488cd9e7267bf4b0fe8cdebf25d8d6df680d21bdf41150d23e23d6652/greenlet-3.5.5-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b241c32f912ada659808d68e308c5
  • Network accessline 108
    { url = "https://files.pythonhosted.org/packages/84/d4/d5bc2fdebbdda0c94555925ba79948b8395d75a7f6a36cc85dce5bab9f11/greenlet-3.5.5-cp315-cp315-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ef6a08349401d8eaf3cb12688ac855
  • Network accessline 109
    { url = "https://files.pythonhosted.org/packages/65/53/4e13642efc4d7ad6554ecb2242a5be42666b2e1a067323e88dfc0124a04b/greenlet-3.5.5-cp315-cp315-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37faa97daccb6d9f4c2141ce3118d023c3
  • Network accessline 110
    { url = "https://files.pythonhosted.org/packages/bd/93/542d8a3a90f3b35c6ad8bf7e56a03010287f2cafa289a5b7985b5207db39/greenlet-3.5.5-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f2e3d061b8e13aec2f0441689b3c71b2
  • Network accessline 111
    { url = "https://files.pythonhosted.org/packages/cd/32/188447c9a468d6977d2989397226b0c6b65ab6f4cf943f931643328512fc/greenlet-3.5.5-cp315-cp315-manylinux_2_39_riscv64.whl", hash = "sha256:b18007dc2473a7942fd157366b55f01da6fed7ce85318591005b4
  • Network accessline 112
    { url = "https://files.pythonhosted.org/packages/52/b5/89c9f2e8460d71101037d47a1feed11928615a5edd42370be290e0657eeb/greenlet-3.5.5-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:9ab5f5b93655e77fe0d6c2dfd22b5eac751bb1f876d8ec21761b7c
  • Network accessline 113
    { url = "https://files.pythonhosted.org/packages/b8/60/297de93f3b02ac78a5e04d32bb8bbe3080f4a73d8ed95016561463b70618/greenlet-3.5.5-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:f0e5a21bd4452a88cf032fc43c4a5b307ab1380eacb63b5988f9c03
  • Network accessline 114
    { url = "https://files.pythonhosted.org/packages/18/25/54c6eaff4f337fb670215e89eb2d00d9499487b658e709d4b477be4a342e/greenlet-3.5.5-cp315-cp315-win_amd64.whl", hash = "sha256:469dbb0a78625642f4a626cfd0c6e8bccc0385b5e49189b6308bbe849ec88a8e",
  • Network accessline 115
    { url = "https://files.pythonhosted.org/packages/67/67/857e88a36301caa0e029870132c2478bd55d896630321432afab03a3115f/greenlet-3.5.5-cp315-cp315-win_arm64.whl", hash = "sha256:2d57406c3efd32d7a81e17a674314e8bd00792cdab49ea3228a49aa1bfb2e769",
  • Network accessline 116
    { url = "https://files.pythonhosted.org/packages/10/e2/3144c0a116067ac1e30457b0139a94d60d1d36a86e015de68e9ac87cb3bc/greenlet-3.5.5-cp315-cp315t-macosx_11_0_universal2.whl", hash = "sha256:68184dfcf50ccaa8e864770fe0633a7e27250ea9329f8192ef47
  • Network accessline 117
    { url = "https://files.pythonhosted.org/packages/5c/a1/cb4223a7e9b9f43b8807e8eb212358bfe2dfaa174a9ea2889eb1714dcba2/greenlet-3.5.5-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ec0dc0e59dc9c61af5c47348365c
  • Network accessline 118
    { url = "https://files.pythonhosted.org/packages/9e/cd/a154b4498e5d8f12ada291cfb3b8d596eadde2177f5bf09a9be699d2a446/greenlet-3.5.5-cp315-cp315t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e604f58e35833fc46ef20302bcb31
  • Network accessline 119
    { url = "https://files.pythonhosted.org/packages/ce/f4/e450a68a152f819491d8c7df6a8254e761d87e6a78759268961f8c5bd4dd/greenlet-3.5.5-cp315-cp315t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2888a3a38bc5ee5bb6c438372197152e8
  • Network accessline 120
    { url = "https://files.pythonhosted.org/packages/bf/bb/b0031d260c2968a3c87deebc51d80c64e499377f993aafe06ee3b7488cc2/greenlet-3.5.5-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:40239b5384f96da3963585cc6d7eaa9
  • Network accessline 121
    { url = "https://files.pythonhosted.org/packages/18/23/17e63d6bf3b9c9b9dbea981b7f643a71f79603bdfb4f1c3a9cf353e22aed/greenlet-3.5.5-cp315-cp315t-manylinux_2_39_riscv64.whl", hash = "sha256:1e8d9391fe77f15649589a907cef972dbbd6352ef7ff7dc0492f
  • Network accessline 122
    { url = "https://files.pythonhosted.org/packages/9a/07/da554b71ab88e649da146e1065d86a48a5c5d92e50ab74ef41b504aa7f56/greenlet-3.5.5-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:a1eaccf5c3a1d3e46dead602c72e6836731e8e245c9de6a277645
  • Network accessline 123
    { url = "https://files.pythonhosted.org/packages/78/76/26a3782a051677668af9d92beaa47cd87ba9dd5072f762961144a03dd4c6/greenlet-3.5.5-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:19e4e026fe20691f333b8eb1a3bc9625eceba8c3f9d62ec5a6f858
  • Network accessline 124
    { url = "https://files.pythonhosted.org/packages/28/d9/fe7baf4190c2ae71f267efb9de21b3172bb35bc0ed1ef53dd6027d658e33/greenlet-3.5.5-cp315-cp315t-win_amd64.whl", hash = "sha256:712aee154f648bde84634654bb38bb78c69ac640c37a45c9effed800735049d8"
  • Network accessline 125
    { url = "https://files.pythonhosted.org/packages/df/af/419a4e383bd600858a9b67e9b280a60fdc383ee3f2fe5b6c0c1ef04e74d1/greenlet-3.5.5-cp315-cp315t-win_arm64.whl", hash = "sha256:7f049911ee81a16a03c33d5450d8d5867d27f596ca5fb201b86f4524e874468b"
  • Network accessline 129
    name = "iniconfig" version = "2.3.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 130
    version = "2.3.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c7
  • Network accessline 131
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 132
    sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20
  • Network accessline 133
    wheels = [     { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53
  • Network accessline 134
    { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 
  • Network accessline 138
    name = "markdown" version = "3.10.3" source = { registry = "https://pypi.org/simple" }
  • Network accessline 139
    version = "3.10.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/29/6f/da4c6aea59b3001f2e8c0ec7497475aadaf3b021c10cab5b2858f0f32b26/markdown-3.10.3.tar.gz", hash = "sha256:3589362
  • Network accessline 140
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 141
    sdist = { url = "https://files.pythonhosted.org/packages/29/6f/da4c6aea59b3001f2e8c0ec7497475aadaf3b021c10cab5b2858f0f32b26/markdown-3.10.3.tar.gz", hash = "sha256:3589362618f743188b4d955b874402bc814f4f83f544dc207719f4baa7d9c45f", size = 37
  • Network accessline 142
    wheels = [     { url = "https://files.pythonhosted.org/packages/64/69/4a5af2bc115a9a33fefe51709749de8262be3f9ba063d1753a837cdbc49c/markdown-3.10.3-py3-none-any.whl", hash = "sha256:fa6c92a00a4a3c98b22728c64a935ae1928250ae65058a6ded814d2cc29
  • Network accessline 143
    { url = "https://files.pythonhosted.org/packages/64/69/4a5af2bc115a9a33fefe51709749de8262be3f9ba063d1753a837cdbc49c/markdown-3.10.3-py3-none-any.whl", hash = "sha256:fa6c92a00a4a3c98b22728c64a935ae1928250ae65058a6ded814d2cc29a4cea", size = 
  • Network accessline 147
    name = "packaging" version = "26.3" source = { registry = "https://pypi.org/simple" }
  • Network accessline 148
    version = "26.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc25642
  • Network accessline 149
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 150
    sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313
  • Network accessline 151
    wheels = [     { url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23
  • Network accessline 152
    { url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 1
  • Network accessline 156
    name = "playwright" version = "1.62.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 157
    version = "1.62.0" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 158
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 162
    ] wheels = [     { url = "https://files.pythonhosted.org/packages/6c/5b/ca2abcf3aa69f9fb510215e3064f30b57fe57657c8d04ede45bb966d5606/playwright-1.62.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:d8da938f3748841a8754f2e1f0216902c1c8f8a
  • Network accessline 163
    wheels = [     { url = "https://files.pythonhosted.org/packages/6c/5b/ca2abcf3aa69f9fb510215e3064f30b57fe57657c8d04ede45bb966d5606/playwright-1.62.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:d8da938f3748841a8754f2e1f0216902c1c8f8ae3
  • Network accessline 164
    { url = "https://files.pythonhosted.org/packages/6c/5b/ca2abcf3aa69f9fb510215e3064f30b57fe57657c8d04ede45bb966d5606/playwright-1.62.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:d8da938f3748841a8754f2e1f0216902c1c8f8ae3720de8b32ccf8e6
  • Network accessline 165
    { url = "https://files.pythonhosted.org/packages/af/1a/0bfbe9904350961f4dbb713f04342e40d548c5fc26c8157bd13617c81492/playwright-1.62.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:db755ab27db21a04186f1fe8169888e42356086e439b1059b923ef417f
  • Network accessline 166
    { url = "https://files.pythonhosted.org/packages/66/dc/c0486b407ad0699a250f6bbe3066fca95344009a99ca66e88ca175c69dc1/playwright-1.62.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:5108bd5b3e87169ddf269feee097da5893af7f8aea4634dfc8405
  • Network accessline 167
    { url = "https://files.pythonhosted.org/packages/43/6b/b24aebc2b04bffcb342bccf96e287c78b363e1615bed5cea97500cc0393a/playwright-1.62.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:ba33bae6a13b3d9d354c751cb618af357d20fe1d57767cbcce52079bbe
  • Network accessline 168
    { url = "https://files.pythonhosted.org/packages/36/43/b4b18bdc87e1949568fffdcde3ff9a0456266b2d0c6d4432cc34d89ea6eb/playwright-1.62.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db2d76613a57ad844362ce42f7d0c2f
  • Network accessline 169
    { url = "https://files.pythonhosted.org/packages/81/22/af5d926fc2c32a339eec00a443644bc40ab9db1dd2dd9017873c59773c0c/playwright-1.62.0-py3-none-win32.whl", hash = "sha256:e5614fa89355d7081457680324bb219f79f69c423c5cb6fa250e30b0d8aebf1c", siz
  • Network accessline 170
    { url = "https://files.pythonhosted.org/packages/2b/a9/4160c1033c07af98bf841ad079457dd78408a5ee0dd56cbfe50b8b6a1c22/playwright-1.62.0-py3-none-win_amd64.whl", hash = "sha256:92c0d98ed04eb35af557b709875edba415b1f548bdb22ddb5bb3e1e6c835c2f1",
  • Network accessline 171
    { url = "https://files.pythonhosted.org/packages/6c/ec/06b55d619a7082a766aa04f2c6bb31435c87f02930087d8a0517119408fa/playwright-1.62.0-py3-none-win_arm64.whl", hash = "sha256:ea8d3055aa9d5a9f1832ac82517bd8b42c78fac7ebcbebb0107116735c8cb6a1",
  • Network accessline 175
    name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 176
    version = "1.6.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b762
  • Network accessline 177
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 178
    sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412
  • Network accessline 179
    wheels = [     { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd47
  • Network accessline 180
    { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 205
  • Network accessline 184
    name = "pyee" version = "13.0.1" source = { registry = "https://pypi.org/simple" }
  • Network accessline 185
    version = "13.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 186
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 188
    { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/8b/04/e7c1fe4dc78a6fdbfd6c337b1c3732ff543b8a397683ab38378447baa331/pyee-13.0.1.tar.gz", hash = "sha256:0b931f7c14535667ed4c7e0d531716368715e860b98877
  • Network accessline 189
    ] sdist = { url = "https://files.pythonhosted.org/packages/8b/04/e7c1fe4dc78a6fdbfd6c337b1c3732ff543b8a397683ab38378447baa331/pyee-13.0.1.tar.gz", hash = "sha256:0b931f7c14535667ed4c7e0d531716368715e860b988770fc7eb8578d1f67fc8", size = 3165
  • Network accessline 190
    sdist = { url = "https://files.pythonhosted.org/packages/8b/04/e7c1fe4dc78a6fdbfd6c337b1c3732ff543b8a397683ab38378447baa331/pyee-13.0.1.tar.gz", hash = "sha256:0b931f7c14535667ed4c7e0d531716368715e860b988770fc7eb8578d1f67fc8", size = 31655,
  • Network accessline 191
    wheels = [     { url = "https://files.pythonhosted.org/packages/a0/c4/b4d4827c93ef43c01f599ef31453ccc1c132b353284fc6c87d535c233129/pyee-13.0.1-py3-none-any.whl", hash = "sha256:af2f8fede4171ef667dfded53f96e2ed0d6e6bd7ee3bb46437f77e3b5768922
  • Network accessline 192
    { url = "https://files.pythonhosted.org/packages/a0/c4/b4d4827c93ef43c01f599ef31453ccc1c132b353284fc6c87d535c233129/pyee-13.0.1-py3-none-any.whl", hash = "sha256:af2f8fede4171ef667dfded53f96e2ed0d6e6bd7ee3bb46437f77e3b57689228", size = 1565
  • Network accessline 196
    name = "pygments" version = "2.21.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 197
    version = "2.21.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/49/2e/ced460408999b33da6b31b0021b0f37d329e202d4169aeb164493778f25b/pygments-2.21.0.tar.gz", hash = "sha256:610ca75
  • Network accessline 198
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 199
    sdist = { url = "https://files.pythonhosted.org/packages/49/2e/ced460408999b33da6b31b0021b0f37d329e202d4169aeb164493778f25b/pygments-2.21.0.tar.gz", hash = "sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c", size = 50
  • Network accessline 200
    wheels = [     { url = "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl", hash = "sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377
  • Network accessline 201
    { url = "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl", hash = "sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9", size = 
  • Network accessline 205
    name = "pytest" version = "9.1.1" source = { registry = "https://pypi.org/simple" }
  • Network accessline 206
    version = "9.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 207
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 215
    { name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d9
  • Network accessline 216
    ] sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 163
  • Network accessline 217
    sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 16363
  • Network accessline 218
    wheels = [     { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f
  • Network accessline 219
    { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386
  • Network accessline 223
    name = "pytest-mock" version = "3.15.1" source = { registry = "https://pypi.org/simple" }
  • Network accessline 224
    version = "3.15.1" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 225
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 227
    { name = "pytest" }, ] sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686
  • Network accessline 228
    ] sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size
  • Network accessline 229
    sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size =
  • Network accessline 230
    wheels = [     { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc
  • Network accessline 231
    { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size
  • Network accessline 235
    name = "python-dateutil" version = "2.9.0.post0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 236
    version = "2.9.0.post0" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 237
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 239
    { name = "six" }, ] sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90f
  • Network accessline 240
    ] sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0a
  • Network accessline 241
    sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3
  • Network accessline 242
    wheels = [     { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136df
  • Network accessline 243
    { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7
  • Network accessline 247
    name = "ruff" version = "0.15.20" source = { registry = "https://pypi.org/simple" }
  • Network accessline 248
    version = "0.15.20" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/43/dc/35b341fc554ba02f217fc10da57d1a75168cfbcf75b0ef2202176d4c4f2d/ruff-0.15.20.tar.gz", hash = "sha256:1416eb043
  • Network accessline 249
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 250
    sdist = { url = "https://files.pythonhosted.org/packages/43/dc/35b341fc554ba02f217fc10da57d1a75168cfbcf75b0ef2202176d4c4f2d/ruff-0.15.20.tar.gz", hash = "sha256:1416eb04349192646b54de98f146c4f59afe37d0decfc02c3cbbf396f3a28566", size = 47554
  • Network accessline 251
    wheels = [     { url = "https://files.pythonhosted.org/packages/94/d9/2d5014f0253ba541d2061d9fa7193f48e941c8b21bb88a7ff9bbe0bd0596/ruff-0.15.20-py3-none-linux_armv6l.whl", hash = "sha256:00e188c53e499c3c1637f73c91dcf2fb56d576cab76ce1be50a27
  • Network accessline 252
    { url = "https://files.pythonhosted.org/packages/94/d9/2d5014f0253ba541d2061d9fa7193f48e941c8b21bb88a7ff9bbe0bd0596/ruff-0.15.20-py3-none-linux_armv6l.whl", hash = "sha256:00e188c53e499c3c1637f73c91dcf2fb56d576cab76ce1be50a27c4e80e37078", s
  • Network accessline 253
    { url = "https://files.pythonhosted.org/packages/c6/d3/ac1798ba64f670698867fcfc591d50e7e421bef137db564858f619a30fcf/ruff-0.15.20-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9ebd1fd9b9c95fc0bd7b2761aebec1f030013d2e193a2901b224af68fe472
  • Network accessline 254
    { url = "https://files.pythonhosted.org/packages/47/47/d3ac899991202095dfcf3d5176be4272642be3cf981a2f1a30f72a2afb95/ruff-0.15.20-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c5b16cdd67ca108185cd36dce98c576350c03b1660a751de725fb049193a063
  • Network accessline 255
    { url = "https://files.pythonhosted.org/packages/33/13/4e043fe30aa94d4ff5213a9881fc296d12960f5971b234a5263fdc225312/ruff-0.15.20-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3413bb3c3d2ca6a8208f1f4809cd2dca3c6d
  • Network accessline 256
    { url = "https://files.pythonhosted.org/packages/76/e6/92e7bf40388bc5800073b96564f56264f7e48bfd1a498f5ced6ae6d5a769/ruff-0.15.20-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd7ec42b3bb3da066488db093308a69c4ac5ee
  • Network accessline 257
    { url = "https://files.pythonhosted.org/packages/13/7a/43460be3f24495a3aa46d4b16873e2c4941b3b5f0b00cf88c03b7b94b339/ruff-0.15.20-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1a36ad0eb77fba9aabfb69ede54de6f376d04ac18
  • Network accessline 258
    { url = "https://files.pythonhosted.org/packages/27/a0/f37077884873221c6b33b4ab49eb18f9f88e54a16a25a5bca59bef46dd66/ruff-0.15.20-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6df3b1e4610432f0386dba04d853b5f08cb
  • Network accessline 259
    { url = "https://files.pythonhosted.org/packages/a6/74/165545b60256a9704c21ac0ec4a0d07933b320812f9584836c9f4aca4292/ruff-0.15.20-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e89f198a1ea6ef0d727c1cf16088bc91a6cb0ab9
  • Network accessline 260
    { url = "https://files.pythonhosted.org/packages/86/b1/a976a136d40ade83ce743578399865f57001003a409acadc0ecbb3051082/ruff-0.15.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309809086c2acb67624950a3c8133e80f32d0d
  • Network accessline 261
    { url = "https://files.pythonhosted.org/packages/19/0f/f032696cb01c9b54c0263fa393474d7758f1cdc021a01b04e3cbc2500999/ruff-0.15.20-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:2d2374caa2f2c2f9e2b7da0a50802cfb8b79f55a9b5e49379f564544fb
  • Network accessline 262
    { url = "https://files.pythonhosted.org/packages/4b/f4/51b1a14bc69e8c224b15dab9cce8e99b425e0455d462caa2b3c9be2b6a8e/ruff-0.15.20-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a1ed17b65293e0c2f22fc387bc13198a5de94bf4429589b0ff6946b0fea
  • Network accessline 263
    { url = "https://files.pythonhosted.org/packages/71/4b/fe267640783cd02bf6c5cc290b1df1051be2ec294c678b5c15fe19e52343/ruff-0.15.20-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f701305e66b38ea6c91882490eb73459796808e4c6362a1b765255e0cdcd
  • Network accessline 264
    { url = "https://files.pythonhosted.org/packages/b0/c0/a65aa4ec2f5e87a1df32dc3ec1fede434fe3dfd5cbcf3b503cafc676ab54/ruff-0.15.20-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5b9c0c367ad8e5d0d5b5b8537864c469a0a0e55417aadfbeca41fa61333be9
  • Network accessline 265
    { url = "https://files.pythonhosted.org/packages/5a/a4/0caa331d954ae2723d729d351c989cb4ca8b6077d5c6c2cb6de75e98c041/ruff-0.15.20-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:01cc00dd58f0df339d0e902219dd53990ea99996a0344e5d9cc8d45d5307
  • Network accessline 266
    { url = "https://files.pythonhosted.org/packages/10/9b/5f14927848d2fd4aa891fd88d883788c5a7baba561c7874732364045708c/ruff-0.15.20-py3-none-win32.whl", hash = "sha256:ed65ef510e43a137207e0f01cfcf998aeddb1aeeda5c9d35023e910284d7cf21", size = 1
  • Network accessline 267
    { url = "https://files.pythonhosted.org/packages/fa/f0/fe47c501f9dea92a26d788ff98bb5d92ed4cb4c88792c5c88af6b697dc8e/ruff-0.15.20-py3-none-win_amd64.whl", hash = "sha256:a525c81c70fb0380344dd1d8745d8cc1c890b7fc94a58d5a07bd8eb9557b8415", size
  • Network accessline 268
    { url = "https://files.pythonhosted.org/packages/d7/2b/9555445e1201d92b3195f45cdb153a0b68f24e0a4273f6e3d5ab46e212bb/ruff-0.15.20-py3-none-win_arm64.whl", hash = "sha256:2f5b2a6d614e8700388806a14996c40fab2c47b819ef57d790a34878858ed9ca", size
  • Network accessline 272
    name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 273
    version = "1.17.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e
  • Network accessline 274
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 275
    sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, 
  • Network accessline 276
    wheels = [     { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c
  • Network accessline 277
    { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 1
  • Network accessline 281
    name = "skills-ref" version = "0.1.1" source = { registry = "https://pypi.org/simple" }
  • Network accessline 282
    version = "0.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 283
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 286
    { name = "strictyaml" }, ] sdist = { url = "https://files.pythonhosted.org/packages/23/42/943d3ba8b097af7068b7178563a5062ad8a977982f4a7b4f67facfc575e9/skills_ref-0.1.1.tar.gz", hash = "sha256:6b400ca6e0049be62dca0167ff943ba2745fd67efb37fbba
  • Network accessline 287
    ] sdist = { url = "https://files.pythonhosted.org/packages/23/42/943d3ba8b097af7068b7178563a5062ad8a977982f4a7b4f67facfc575e9/skills_ref-0.1.1.tar.gz", hash = "sha256:6b400ca6e0049be62dca0167ff943ba2745fd67efb37fbba4d0ee341fccd2695", size =
  • Network accessline 288
    sdist = { url = "https://files.pythonhosted.org/packages/23/42/943d3ba8b097af7068b7178563a5062ad8a977982f4a7b4f67facfc575e9/skills_ref-0.1.1.tar.gz", hash = "sha256:6b400ca6e0049be62dca0167ff943ba2745fd67efb37fbba4d0ee341fccd2695", size = 9
  • Network accessline 289
    wheels = [     { url = "https://files.pythonhosted.org/packages/af/25/36a43c3a61fb6cc3984e6ad5e556929b8ae71c95eba615dae4cf2f427964/skills_ref-0.1.1-py3-none-any.whl", hash = "sha256:d35db5bb8de71ae301daf5ca9cb71f8a555e8c6f83a6d40e46a5bc09f8
  • Network accessline 290
    { url = "https://files.pythonhosted.org/packages/af/25/36a43c3a61fb6cc3984e6ad5e556929b8ae71c95eba615dae4cf2f427964/skills_ref-0.1.1-py3-none-any.whl", hash = "sha256:d35db5bb8de71ae301daf5ca9cb71f8a555e8c6f83a6d40e46a5bc09f8f461b5", size =
  • Network accessline 294
    name = "strictyaml" version = "1.7.3" source = { registry = "https://pypi.org/simple" }
  • Network accessline 295
    version = "1.7.3" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 296
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 298
    { name = "python-dateutil" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af02679
  • Network accessline 299
    ] sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size =
  • Network accessline 300
    sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 1
  • Network accessline 301
    wheels = [     { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888
  • Network accessline 302
    { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size =
  • Network accessline 306
    name = "tomli" version = "2.0.1" source = { registry = "https://pypi.org/simple" }
  • Network accessline 307
    version = "2.0.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f
  • Network accessline 308
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 309
    sdist = { url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f", size = 15164,
  • Network accessline 310
    wheels = [     { url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ec
  • Network accessline 311
    { url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", size = 1275
  • Network accessline 315
    name = "typing-extensions" version = "4.16.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 316
    version = "4.16.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha25
  • Network accessline 317
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 318
    sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", 
  • Network accessline 319
    wheels = [     { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f3
  • Network accessline 320
    { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8"

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 11 facts
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/_utils.py:33High confidence
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/client.py:513High confidence
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/comment.py:421High confidence
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/explore.py:18High confidence
  • Contacts creator.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/login.py:28High confidence
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/login.py:48High confidence
  • Contacts creator.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/publish.py:22High confidence
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/search.py:61High confidence
  • Contacts www.skills.sh, which SKILL.md, the README and the plugin manifest do not mentionscripts/site_check.py:101High confidence
  • Contacts deliciousbuding.github.io, which SKILL.md, the README and the plugin manifest do not mentionscripts/site_check.py:174High confidence
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/user.py:26High confidence
Signal confidence: 246 facts

and 196 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.