Not in the top 1,000 by GitHub stars

zjp1997720/zhijian-skills

Canonical source and governance toolkit for Zhijian AI public Agent Skills

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

skills/codex-cli-model-bridge/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/codex-doctor/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/codex-external-handoff/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/codex-handoff/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Local scripts

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/codex-image-gen/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/codex-model-routing-team/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/codex-skill-admin/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/codex-theme-studio/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/enterprise-clone-builder/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/gpt56-sol-pro-consult/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/html-express/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/leadbook/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/light-plan-and-work/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Local scripts

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/scholar-stickers/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/skill-open-sourcer/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/web-clipper/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/wechat-article-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/wechat-styler/SKILL.md

Week of Nov 2, 2026 · +2 / −2 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

- 5 version: 1.18.2
+ 5 version: 1.18.3
- 104 **版本:** 1.18.2 · **作者:** 大鹏
+ 104 **版本:** 1.18.3 · **作者:** 大鹏

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/workbuddy-cli-model-bridge/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

skills/wxmp-article-harvester/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d3bca91227aa → d09cc28cd091

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d3bca91227aa

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit d09cc28cd0915808534ea3bf199f17efa75553a6

git clone --filter=blob:none --no-checkout https://github.com/zjp1997720/zhijian-skills.git .hotskills/zjp1997720-zhijian-skills && git -C .hotskills/zjp1997720-zhijian-skills checkout --detach d09cc28cd0915808534ea3bf199f17efa75553a6 # Copy each selected skill directory from .hotskills/zjp1997720-zhijian-skills into .agents/skills/<skill-name>/
786GitHub stars
-2stars in 7 days
20skills in this repository
27commits in 30 days

Heat

1.4
  • 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

Aug 2, 2026Nov 6, 2026788

Individual skills in this repository

How it works

codex-cli-model-bridge

When your agent uses it

Install, audit, repair, and manage Codex custom model Providers and model catalogs backed by a loopback CLIProxyAPI or Codex Router. Use whenever the user asks to add, remove, upgrade, restore, or diagnose third-party models in Codex or the Codex desktop model picker; mentions Grok, OpenCode Go, DeepSeek, Gemini, GLM Coding Plan, GLM-5.3, subscription-backed CLI models, custom model_provider, model_catalog_json, or Codex Fast mode; or wants the same local proxy models synchronized between Codex and WorkBuddy. Preserve unrelated Codex configuration and credentials. Isolated profile is the default Windows path.

What it loads into context

Frontmatter

159 tokens

Always available to the agent

SKILL.md

3,973 tokens

When the skill is activated

Reference documents

3,287 tokens

Loaded on request

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

The playbook

  1. Resolve the Skill directory
  2. Default workflow
  3. Repair workflow
  4. Safety boundaries
  5. Completion gate

Scripts executed separately

  • scripts/bridge.py
  • scripts/transparent_proxy.mjs
  • tests/test_bridge.py

Files

  • LICENSEasset1,067 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • SKILL.mdcore17,944 bytes
  • agents/openai.yamlasset377 bytes
  • evals/evals.jsonasset1,396 bytes
  • models/deepseek-v4-flash.jsonasset475 bytes
  • models/deepseek-v4-pro.jsonasset468 bytes
  • models/grok-4.6.jsonasset469 bytes
  • policies/catalog.jsonasset313 bytes
  • references/glm-coding-plan.mddoc3,465 bytes
  • references/model-manifests.mddoc1,802 bytes
  • references/troubleshooting.mddoc5,463 bytes
  • references/windows.mddoc2,424 bytes
  • scripts/bridge.pyruns75,708 bytes
  • scripts/transparent_proxy.mjsruns4,316 bytes
  • tests/test_bridge.pyruns26,943 bytes
Read SKILL.md

# Codex CLI Model Bridge

Manage subscription-backed or local proxy models in Codex without treating Codex like WorkBuddy. Codex uses a Responses API Provider plus a model catalog; WorkBuddy uses independent JSON entries. Share CLIProxyAPI infrastructure and verified Provider facts, but keep each application's writer and state separate.

Codex selects one `model_provider` for a task. Model catalog entries do not carry per-model Provider routing. Preserve the Provider identity that owns the majority of indexed task history (normally `openai`). For normal Desktop use, the supported bridge design keeps `model_provider = "openai"`, keeps ChatGPT subscription auth intact, and points the built-in Provider's `openai_base_url` at an owner-only loopback header-rewriting proxy. CLIProxyAPI then routes native GPT subscription models and verified third-party models behind one catalog without changing the task Provider identity. Keep the isolated `$CODEX_HOME/cli-proxy.config.toml` profile as the default path on Windows and as a fallback everywhere else.

This is transparent single-Provider routing, not per-model Provider routing. Never set the Desktop default to `cli_proxy` or vendor `ZAI` when most history belongs to `openai`.

When the user wants GLM-5.3 from a Coding Plan key, read [glm-coding-plan.md](references/glm-coding-plan.md). If Desktop already uses Codex Router on port 4202, add `zai-coding` there and keep the OpenAI Provider identity. Do not run `npx @z_ai/coding-helper`.

On Windows, start with the isolated profile. Read [windows.md](references/windows.md). Do not require Homebrew, LaunchAgents, or Codex Router.

## Resolve the Skill directory
View the complete source on GitHub

Skills included

  • codex-cli-model-bridge
  • codex-doctor
  • codex-external-handoff
  • codex-handoff
  • codex-image-gen
  • codex-model-routing-team
  • codex-skill-admin
  • codex-theme-studio
  • enterprise-clone-builder
  • gpt56-sol-pro-consult
  • html-express
  • leadbook
  • light-plan-and-work
  • scholar-stickers
  • skill-open-sourcer
  • web-clipper
  • wechat-article-search
  • wechat-styler
  • workbuddy-cli-model-bridge
  • wxmp-article-harvester

Repository facts

License
MIT
Created
Jul 17, 2026
Last pushed
Nov 6, 2026
Forks
100
Open issues
2
Project activity
Active

Rank over the last 12 weeks

Now #994 · best #732 · down 220 in 30 days

  1. #830 on Oct 12
  2. #837 on Oct 13
  3. #854 on Oct 14
  4. #857 on Oct 19
  5. #872 on Oct 23
  6. #994 since Oct 25
45 earlier periods
  1. #845 on Aug 2
  2. #849 on Aug 8
  3. #855 on Aug 9
  4. #892 on Aug 10
  5. #893 on Aug 11
  6. #890 on Aug 12
  7. #891 on Aug 13
  8. #871 on Aug 14
  9. #842 on Aug 15
  10. #866 on Aug 16
  11. #868 on Aug 17
  12. #887 on Aug 18
  13. #879 on Aug 19
  14. #872 on Aug 20
  15. #878 on Aug 21
  16. #826 on Aug 22
  17. #881 on Aug 23
  18. #905 on Aug 25
  19. #931 on Aug 28
  20. #848 on Aug 29
  21. #853 on Aug 30
  22. #899 on Aug 31
  23. #927 on Sep 1
  24. #887 on Sep 2
  25. #879 on Sep 3
  26. #840 on Sep 4
  27. #812 on Sep 5
  28. #847 on Sep 6
  29. #872 on Sep 7
  30. #892 on Sep 8
  31. #790 on Sep 11
  32. #746 on Sep 12
  33. #743 on Sep 13
  34. #772 on Sep 14
  35. #762 on Sep 15
  36. #770 on Sep 16
  37. #772 on Sep 17
  38. #758 on Sep 18
  39. #732 on Sep 19
  40. #744 on Sep 20
  41. #774 on Sep 21
  42. #818 on Sep 29
  43. #796 on Oct 5
  44. #800 on Oct 6
  45. #806 on Oct 10

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 123 notes
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-cli-model-bridge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-doctor/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-doctor/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-doctor/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-doctor/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-doctor/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/codex-doctor/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 1,074 signals by file

skills/codex-cli-model-bridge/SKILL.md

  • Network accessline 145
    It then keeps `model_provider = "openai"`, sets `openai_base_url = "http://127.0.0.1:8318/v1"`, activates the verified catalog, preserves ChatGPT login and unrelated TOML, creates a `0600` backup, and proves the task inventory digest did no

skills/codex-cli-model-bridge/references/glm-coding-plan.md

  • Network accessline 13
    | `openai_base_url` | Path | |---|---| | `http://127.0.0.1:4202/_codex-router/.../v1` | Codex Router. This is the verified coexistence path. |
  • Network accessline 14
    |---|---| | `http://127.0.0.1:4202/_codex-router/.../v1` | Codex Router. This is the verified coexistence path. | | `http://127.0.0.1:8318/v1` | CLIProxyAPI transparent header proxy. Do not add GLM by switching the default Provider. |
  • Network accessline 15
    | `http://127.0.0.1:4202/_codex-router/.../v1` | Codex Router. This is the verified coexistence path. |
  • Network accessline 16
    | `http://127.0.0.1:8318/v1` | CLIProxyAPI transparent header proxy. Do not add GLM by switching the default Provider. |
  • Network accessline 19
    Official Codex docs use Responses at `https://api.z.ai/api/v1`. Codex Router instead talks to the Coding Plan **Chat Completions** endpoint and keeps `model_provider = "openai"`. Prefer the Router path when Router is already the Desktop cat
  • Network accessline 23
    1. Confirm the key is a Coding Plan key. The ordinary BigModel `/api/paas/v4` URL returns `1113`. 2. Write the key to `~/.codex/codex-router/zai-coding-api-key.secret` (mode `0600`). Do not put it on a command line. 3. For a mainland key, s
  • Network accessline 24
    2. Write the key to `~/.codex/codex-router/zai-coding-api-key.secret` (mode `0600`). Do not put it on a command line. 3. For a mainland key, set `ZAI_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4` on the Router process. On mac
  • Network accessline 25
    3. For a mainland key, set `ZAI_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4` on the Router process. On macOS that is usually a LaunchAgent env. On Windows, set it in the shell or process that starts Router. Keep the existing

skills/codex-cli-model-bridge/references/windows.md

  • Network accessline 9
    3. Node.js only if the user wants Desktop-transparent mode. 4. CLIProxyAPI on loopback. Practical sources:    - [CLIProxyAPI GitHub Releases](https://github.com/router-for-me/CLIProxyAPI/releases)
  • Network accessline 10
    4. CLIProxyAPI on loopback. Practical sources:    - [CLIProxyAPI GitHub Releases](https://github.com/router-for-me/CLIProxyAPI/releases)    - [EasyCLIProxyAPI](https://github.com/router-for-me/EasyCLIProxyAPI) if a tray app is easier
  • Network accessline 11
    - [CLIProxyAPI GitHub Releases](https://github.com/router-for-me/CLIProxyAPI/releases)
  • Network accessline 12
    - [EasyCLIProxyAPI](https://github.com/router-for-me/EasyCLIProxyAPI) if a tray app is easier

skills/codex-cli-model-bridge/scripts/bridge.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 35
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 36
    DEFAULT_STATE_DIR = Path("~/.config/codex-cli-model-bridge").expanduser() DEFAULT_PROXY_URL = "http://127.0.0.1:8317/v1" DEFAULT_TRANSPARENT_PROXY_URL = "http://127.0.0.1:8318/v1"
  • Network accessline 37
    DEFAULT_PROXY_URL = "http://127.0.0.1:8317/v1"
  • Network accessline 38
    DEFAULT_TRANSPARENT_PROXY_URL = "http://127.0.0.1:8318/v1"
  • Access to secretsline 113
    [Credential-related source omitted]
  • Access to secretsline 124
    [Credential-related source omitted]
  • Access to secretsline 125
    [Credential-related source omitted]
  • Network accessline 307
    payload = read_json(fixture)     else:         request = urllib.request.Request(
  • Network accessline 308
    else:         request = urllib.request.Request(             f"{base_url.rstrip('/')}/models",
  • Network accessline 309
    request = urllib.request.Request(
  • Network accessline 311
    [Credential-related source omitted]
  • Network accessline 312
    )         with urllib.request.urlopen(request, timeout=12) as response:             payload = json.load(response)
  • Network accessline 313
    with urllib.request.urlopen(request, timeout=12) as response:
  • Access to secretsline 661
    [Credential-related source omitted]
  • Network accessline 677
    def wait_for_transparent_proxy(base_url: str, attempts: int = 20) -> bool:     request = urllib.request.Request(transparent_health_url(base_url))
  • Network accessline 678
    request = urllib.request.Request(transparent_health_url(base_url))
  • Network accessline 679
    for _ in range(attempts):         try:             with urllib.request.urlopen(request, timeout=2) as response:
  • Network accessline 680
    try:             with urllib.request.urlopen(request, timeout=2) as response:                 payload = json.load(response)
  • Network accessline 681
    with urllib.request.urlopen(request, timeout=2) as response:
  • Access to secretsline 722
    [Credential-related source omitted]
  • Network accessline 802
    [Credential-related source omitted]
  • Network accessline 803
    [Credential-related source omitted]
  • Network accessline 804
    for _ in range(attempts):         try:             with urllib.request.urlopen(request, timeout=2) as response:
  • Network accessline 805
    try:             with urllib.request.urlopen(request, timeout=2) as response:                 payload = json.load(response)
  • Network accessline 806
    with urllib.request.urlopen(request, timeout=2) as response:
  • Network accessline 905
    "stream": False,         }         request = urllib.request.Request(
  • Network accessline 906
    }         request = urllib.request.Request(             f"{args.transparent_url.rstrip('/')}/responses",
  • Network accessline 907
    request = urllib.request.Request(
  • Network accessline 915
    )         try:             with urllib.request.urlopen(request, timeout=args.timeout) as response:
  • Network accessline 916
    try:             with urllib.request.urlopen(request, timeout=args.timeout) as response:                 response.read()
  • Network accessline 917
    with urllib.request.urlopen(request, timeout=args.timeout) as response:

skills/codex-cli-model-bridge/scripts/transparent_proxy.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/codex-cli-model-bridge/tests/test_bridge.py

  • Executable scriptline 1
    Executable file
  • Network accessline 317
    config.write_text(                 'model = "keep-me"\npersonality = "pragmatic"\n\n'                 '[mcp_servers.keep]\ntype = "http"\nurl = "https://example.test"\n',
  • Network accessline 318
    'model = "keep-me"\npersonality = "pragmatic"\n\n'                 '[mcp_servers.keep]\ntype = "http"\nurl = "https://example.test"\n',                 encoding="utf-8",
  • Network accessline 319
    '[mcp_servers.keep]\ntype = "http"\nurl = "https://example.test"\n',
  • Access to secretsline 419
    [Credential-related source omitted]
  • Network accessline 457
    self.assertEqual(payload["status"], "planned")             self.assertIn('model_provider = "openai"', payload["diff"])             self.assertIn('openai_base_url = "http://127.0.0.1:8318/v1"', payload["diff"])
  • Network accessline 458
    self.assertIn('model_provider = "openai"', payload["diff"])             self.assertIn('openai_base_url = "http://127.0.0.1:8318/v1"', payload["diff"])             self.assertFalse(runtime.exists())
  • Network accessline 459
    self.assertIn('openai_base_url = "http://127.0.0.1:8318/v1"', payload["diff"])
  • Network accessline 503
    state = root / "state"             config.write_text(                 '[model_providers.cli_proxy]\nbase_url = "http://127.0.0.1:8317/v1"\nwire_api = "responses"\n',
  • Network accessline 504
    config.write_text(                 '[model_providers.cli_proxy]\nbase_url = "http://127.0.0.1:8317/v1"\nwire_api = "responses"\n',                 encoding="utf-8",
  • Network accessline 505
    '[model_providers.cli_proxy]\nbase_url = "http://127.0.0.1:8317/v1"\nwire_api = "responses"\n',
  • Network accessline 547
    state = root / "state"             config.write_text(                 '[model_providers.cli_proxy]\nbase_url = "http://127.0.0.1:8317/v1"\nwire_api = "responses"\n',
  • Network accessline 548
    config.write_text(                 '[model_providers.cli_proxy]\nbase_url = "http://127.0.0.1:8317/v1"\nwire_api = "responses"\n',                 encoding="utf-8",
  • Network accessline 549
    '[model_providers.cli_proxy]\nbase_url = "http://127.0.0.1:8317/v1"\nwire_api = "responses"\n',

skills/codex-doctor/scripts/scan_workspace.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 60
    [Credential-related source omitted]
  • Access to secretsline 1141
    [Credential-related source omitted]

skills/codex-doctor/tests/test_scan_workspace.py

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

skills/codex-external-handoff/references/app-server-contract.md

  • Network accessline 18
    - [Codex App Server 文档](https://learn.chatgpt.com/docs/app-server)
  • Network accessline 19
    - [OpenAI Codex App Server 源码说明](https://github.com/openai/codex/blob/main/codex-rs/app-server/README.md)
  • Network accessline 20
    - [OpenAI Claude Code Codex 插件](https://github.com/openai/codex-plugin-cc)

skills/codex-external-handoff/scripts/codex_external_handoff.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 92
    [Credential-related source omitted]
  • Access to secretsline 95
    [Credential-related source omitted]
  • Access to secretsline 226
    [Credential-related source omitted]
  • Access to secretsline 561
    [Credential-related source omitted]
  • Access to secretsline 562
    [Credential-related source omitted]
  • Access to secretsline 607
    [Credential-related source omitted]

skills/codex-external-handoff/tests/test_codex_external_handoff.py

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

skills/codex-handoff/tests/test_contract.py

  • Executable scriptline 1
    Executable file

skills/codex-image-gen/SKILL.md

  • Network accessline 22
    3. `~/.codex/auth.json` 存在且可读 4. 机器可访问:    - `https://chatgpt.com/backend-api/codex/responses`
  • Network accessline 23
    4. 机器可访问:    - `https://chatgpt.com/backend-api/codex/responses`    - `https://auth.openai.com/oauth/token`
  • Network accessline 24
    - `https://chatgpt.com/backend-api/codex/responses`
  • Network accessline 25
    - `https://auth.openai.com/oauth/token`

skills/codex-image-gen/references/api-notes.md

  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 39
    POST https://auth.openai.com/oauth/token
  • Network accessline 61
    POST https://chatgpt.com/backend-api/codex/responses
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 72
    [Credential-related source omitted]

skills/codex-image-gen/scripts/codex_image.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 33
    AUTH_PATH = pathlib.Path("~/.codex/auth.json").expanduser() RESPONSES_ENDPOINT = "https://chatgpt.com/backend-api/codex/responses"
  • Network accessline 34
    RESPONSES_ENDPOINT = "https://chatgpt.com/backend-api/codex/responses"
  • Network accessline 35
    REFRESH_ENDPOINT = "https://auth.openai.com/oauth/token"
  • Access to secretsline 186
    [Credential-related source omitted]
  • Access to secretsline 191
    [Credential-related source omitted]
  • Access to secretsline 194
    [Credential-related source omitted]
  • Access to secretsline 195
    [Credential-related source omitted]
  • Network accessline 209
    timeout: int = REQUEST_TIMEOUT, ) -> Tuple[int, Dict[str, Any]]:     request = urllib.request.Request(url=url, data=body, headers=headers or {}, method=method)
  • Network accessline 210
    ) -> Tuple[int, Dict[str, Any]]:     request = urllib.request.Request(url=url, data=body, headers=headers or {}, method=method)     try:
  • Network accessline 211
    request = urllib.request.Request(url=url, data=body, headers=headers or {}, method=method)
  • Network accessline 212
    try:         with urllib.request.urlopen(request, timeout=timeout) as response:             charset = response.headers.get_content_charset() or "utf-8"
  • Network accessline 213
    with urllib.request.urlopen(request, timeout=timeout) as response:
  • Access to secretsline 229
    [Credential-related source omitted]
  • Access to secretsline 231
    [Credential-related source omitted]
  • Access to secretsline 232
    [Credential-related source omitted]
  • Access to secretsline 235
    [Credential-related source omitted]
  • Access to secretsline 244
    [Credential-related source omitted]
  • Access to secretsline 273
    [Credential-related source omitted]
  • Access to secretsline 285
    [Credential-related source omitted]
  • Access to secretsline 286
    [Credential-related source omitted]
  • Access to secretsline 287
    [Credential-related source omitted]
  • Access to secretsline 288
    [Credential-related source omitted]
  • Network accessline 290
    # Codex CLI / ChatGPT token 的常见位置:     # {"https://api.openai.com/auth": {"chatgpt_account_id": "..."}}
  • Network accessline 291
    # {"https://api.openai.com/auth": {"chatgpt_account_id": "..."}}
  • Network accessline 292
    openai_auth = payload.get("https://api.openai.com/auth")
  • Access to secretsline 303
    [Credential-related source omitted]
  • Access to secretsline 539
    [Credential-related source omitted]
  • Access to secretsline 544
    [Credential-related source omitted]
  • Network accessline 550
    }     body = json.dumps(request_body, ensure_ascii=False).encode("utf-8")     request = urllib.request.Request(
  • Network accessline 551
    body = json.dumps(request_body, ensure_ascii=False).encode("utf-8")     request = urllib.request.Request(         url=RESPONSES_ENDPOINT,
  • Network accessline 552
    request = urllib.request.Request(
  • Network accessline 584
    try:         with urllib.request.urlopen(request, timeout=REQUEST_TIMEOUT) as response:
  • Network accessline 585
    with urllib.request.urlopen(request, timeout=REQUEST_TIMEOUT) as response:
  • Possible obfuscationline 630
    return base64.b64decode(image_b64, validate=False)
  • Access to secretsline 777
    [Credential-related source omitted]
  • Access to secretsline 778
    [Credential-related source omitted]
  • Access to secretsline 779
    [Credential-related source omitted]
  • Access to secretsline 782
    [Credential-related source omitted]

skills/codex-image-gen/tests/test_codex_image.py

  • Executable scriptline 1
    Executable file
  • Network accessline 104
    def test_remote_and_data_sources_pass_through(self) -> None:         args = codex_image.parse_args(             ["--prompt", "x", "--reference-image", "https://example.com/ref.png"]
  • Network accessline 105
    args = codex_image.parse_args(             ["--prompt", "x", "--reference-image", "https://example.com/ref.png"]         )
  • Network accessline 106
    ["--prompt", "x", "--reference-image", "https://example.com/ref.png"]
  • Network accessline 107
    )         content = codex_image.build_request_body(args, "x")["input"][0]["content"]         self.assertEqual(content[2]["image_url"], "https://example.com/ref.png")
  • Network accessline 109
    self.assertEqual(content[2]["image_url"], "https://example.com/ref.png")
  • Network accessline 113
    [                 "--prompt", "x",                 "--image", "https://example.com/canvas.png",
  • Network accessline 114
    "--prompt", "x",                 "--image", "https://example.com/canvas.png",                 "--reference-image", "https://example.com/face.png",
  • Network accessline 115
    "--image", "https://example.com/canvas.png",
  • Network accessline 116
    "--reference-image", "https://example.com/face.png",
  • Network accessline 119
    content = codex_image.build_request_body(args, "x")["input"][0]["content"]         self.assertIn("Target/input image 1", content[1]["text"])         self.assertEqual(content[2]["image_url"], "https://example.com/canvas.png")
  • Network accessline 120
    self.assertIn("Target/input image 1", content[1]["text"])         self.assertEqual(content[2]["image_url"], "https://example.com/canvas.png")         self.assertIn("Reference image 1", content[3]["text"])
  • Network accessline 121
    self.assertEqual(content[2]["image_url"], "https://example.com/canvas.png")
  • Network accessline 122
    self.assertIn("Reference image 1", content[3]["text"])         self.assertIn("Do not treat it as the target canvas", content[3]["text"])         self.assertEqual(content[4]["image_url"], "https://example.com/face.png")
  • Network accessline 124
    self.assertEqual(content[4]["image_url"], "https://example.com/face.png")
  • Access to secretsline 186
    [Credential-related source omitted]
  • Network accessline 194
    [Credential-related source omitted]
  • Network accessline 195
    [Credential-related source omitted]
  • Access to secretsline 196
    [Credential-related source omitted]
  • Access to secretsline 201
    [Credential-related source omitted]
  • Network accessline 263
    image.write_bytes(b"png")             refs = [                 {"source": "https://example.com/face.png", "reusable": True},
  • Network accessline 264
    refs = [                 {"source": "https://example.com/face.png", "reusable": True},                 {"source": "data:image/png;base64,AAA", "reusable": False},
  • Network accessline 265
    {"source": "https://example.com/face.png", "reusable": True},
  • Network accessline 269
    args = codex_image.parse_args(                 ["--prompt", "fix hair", "--continue-from", str(manifest),                  "--reference-image", "https://example.com/style.png"]
  • Network accessline 270
    ["--prompt", "fix hair", "--continue-from", str(manifest),                  "--reference-image", "https://example.com/style.png"]             )
  • Network accessline 271
    "--reference-image", "https://example.com/style.png"]
  • Network accessline 275
    self.assertEqual(                 args.reference_image,                 ["https://example.com/face.png", "https://example.com/style.png"],
  • Network accessline 276
    args.reference_image,                 ["https://example.com/face.png", "https://example.com/style.png"],             )
  • Network accessline 277
    ["https://example.com/face.png", "https://example.com/style.png"],

skills/codex-model-routing-team/references/audit-schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",

skills/codex-model-routing-team/references/cli-audit-schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",

skills/codex-model-routing-team/references/native-audit-schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",

skills/codex-model-routing-team/references/official-multi-agent-v2-evidence.md

  • Network accessline 7
    - OpenAI Codex PR [Support leaf models in multi-agent v2](https://github.com/openai/codex/pull/36892) 把 V2 父 Agent 的子模型范围扩展到 picker 可见且未显式禁用的 leaf model。
  • Network accessline 8
    - Codex [rust-v0.147.0 release](https://github.com/openai/codex/releases/tag/rust-v0.147.0) 收录了 leaf-model support。
  • Network accessline 9
    - OpenAI [Codex Subagents documentation](https://developers.openai.com/codex/subagents) 说明本地 Codex 的多模型、每 Agent reasoning 与原生子任务 Surface。
  • Network accessline 10
    - 当前定位依据(2026-09-23):OpenAI [模型指南](https://learn.chatgpt.com/docs/models) 与 [GPT-6 Sol/Luna 发布说明](https://openai.com/index/introducing-gpt-6-sol-and-luna/)。Luna 适合明确、可验收的执行,Sol 保留未决判断与关键审查;评测不能替代当前任务验收。具体决策合同见 [路由策略](routing-policy.md)。
  • Network accessline 17
    - 用户要求直接替换 Sol 执行型号。当前路由中的 Sol 精确标识为 `gpt-6.1-sol`;GPT-6 Luna 的默认执行分工保持,主 Agent 不切换模型。 - Codex Desktop CLI `0.159.0` 使用已登录账号刷新官方目录,返回 `gpt-6.1-sol`、`multi_agent_version=v2` 和 Medium/High/XHigh/Max 等档位。本 Skill 继续禁止 Ultra;账号目录不代替当前宿主的 live sc
  • Network accessline 19
    - [官方模型页](https://developers.openai.com/api/docs/models/gpt-6.1-sol)支持 Medium/High/XHigh/Max。上方 2026-09-23 的 GPT-6 Sol/Luna 记录保留为历史依据,不能视为 6.1 的重测成绩。

skills/codex-model-routing-team/references/provider-policy.md

  • Network accessline 38
    官方参考:[Grok 4.5 文档](https://docs.x.ai/developers/grok-4-5)、[Grok 使用与周配额说明](https://docs.x.ai/grok/faq)。
  • Network accessline 57
    官方参考:[Google Antigravity FAQ](https://antigravity.google/docs/faq)、[Gemini 3.6 Flash 模型页](https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash)、[Antigravity Plans](https://antigravity.google/docs/plans)。

skills/codex-model-routing-team/references/routing-policy.md

  • Network accessline 58
    本轮依据:官方 [模型定位](https://learn.chatgpt.com/docs/models) 将 Luna 用于明确、可重复且知道好结果是什么的任务;[发布说明](https://openai.com/index/introducing-gpt-6-sol-and-luna/) 的研究评估显示复杂能力差距较旧定位更小,但不保证任意任务等质。发布首日 X 用法与少量本地合成测试仅提供方向,不构成稳定胜率证据;高推理等级也不自动保证更快、更省或更准确。

skills/codex-model-routing-team/references/thread-lifecycle.md

  • Network accessline 39
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Network accessline 43
    --provider-status allowed \   --data-allowed \   --probe-url http://127.0.0.1:8317/v1/responses \
  • Network accessline 44
    --data-allowed \   --probe-url http://127.0.0.1:8317/v1/responses \   --auth-env CLI_PROXY_API_KEY
  • Network accessline 45
    --probe-url http://127.0.0.1:8317/v1/responses \
  • Access to secretsline 46
    [Credential-related source omitted]

skills/codex-model-routing-team/scripts/compile_route_plan.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/codex-model-routing-team/scripts/model_preflight.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 29
    def redirect_request(         self,         req: urllib.request.Request,
  • Network accessline 30
    self,         req: urllib.request.Request,         fp: Any,
  • Network accessline 31
    req: urllib.request.Request,
  • Access to secretsline 154
    [Credential-related source omitted]
  • Network accessline 159
    }         headers["Authorization"] = f"Bearer {authorization_value}"     request = urllib.request.Request(
  • Network accessline 160
    headers["Authorization"] = f"Bearer {authorization_value}"     request = urllib.request.Request(         url,
  • Network accessline 161
    request = urllib.request.Request(

skills/codex-model-routing-team/scripts/prepare_native_team.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/codex-model-routing-team/scripts/route_policy.py

  • Executable scriptline 1
    Executable file

skills/codex-model-routing-team/scripts/validate_route_plan.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/codex-model-routing-team/scripts/validate_team_ledger.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/codex-model-routing-team/scripts/validate_team_plan.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/codex-model-routing-team/tests/test_ephemeral_cli_routing.py

  • Executable scriptline 1
    Executable file

skills/codex-model-routing-team/tests/test_luna_routing.py

  • Executable scriptline 1
    Executable file

skills/codex-skill-admin/references/app-server-protocol.md

  • Network accessline 68
    http://127.0.0.1:PORT/readyz

skills/codex-skill-admin/scripts/codex_skill_admin.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 33
    [Credential-related source omitted]
  • Network accessline 58
    def free_port() -> int:     with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
  • Network accessline 59
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
  • Network accessline 75
    text=True,         )         ready_url = f"http://127.0.0.1:{self.port}/readyz"
  • Network accessline 76
    )         ready_url = f"http://127.0.0.1:{self.port}/readyz"         deadline = time.time() + 15
  • Network accessline 77
    ready_url = f"http://127.0.0.1:{self.port}/readyz"
  • Network accessline 85
    raise RuntimeError(f"codex app-server exited early:\n{output}")             try:                 with urllib.request.urlopen(ready_url, timeout=1) as response:
  • Network accessline 86
    try:                 with urllib.request.urlopen(ready_url, timeout=1) as response:                     if response.status == 200:
  • Network accessline 87
    with urllib.request.urlopen(ready_url, timeout=1) as response:
  • Network accessline 141
    "Sec-WebSocket-Version: 13\r\n\r\n"         )         sock = socket.create_connection(("127.0.0.1", self.port), timeout=10)
  • Network accessline 142
    )         sock = socket.create_connection(("127.0.0.1", self.port), timeout=10)         sock.settimeout(30)
  • Network accessline 143
    sock = socket.create_connection(("127.0.0.1", self.port), timeout=10)
  • Access to secretsline 804
    [Credential-related source omitted]

skills/codex-theme-studio/assets/generic-workflow.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" width="1985" height="794" viewBox="0 0 1985 794" role="img" aria-label="Neutral workflow illustration">

skills/codex-theme-studio/assets/renderer-inject.js

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 46
    const binary = atob(artDataUrl.slice(comma + 1));

skills/codex-theme-studio/package.json

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/references/asset-provenance.md

  • Network accessline 5
    - 项目:[Fei-Away/Codex-Dream-Skin](https://github.com/Fei-Away/Codex-Dream-Skin)

skills/codex-theme-studio/references/provenance.md

  • Network accessline 3
    This project was inspired by the MIT-licensed [Fei-Away/Codex-Dream-Skin](https://github.com/Fei-Away/Codex-Dream-Skin). Its injection architecture was derived from that project and pinned during development to commit `26c6c410e0e0bfc053356

skills/codex-theme-studio/scripts/audit-skill-package.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/scripts/base-theme-state.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/scripts/common-macos.sh

  • Executable scriptline 1
    #!/bin/bash
  • Network accessline 221
    cdp_http_ready() {   local port="$1"   /usr/bin/curl --noproxy '*' --silent --fail --max-time 1 \
  • Network accessline 222
    local port="$1"   /usr/bin/curl --noproxy '*' --silent --fail --max-time 1 \     "http://127.0.0.1:${port}/json/version" >/dev/null 2>&1
  • Network accessline 223
    /usr/bin/curl --noproxy '*' --silent --fail --max-time 1 \
  • Network accessline 224
    "http://127.0.0.1:${port}/json/version" >/dev/null 2>&1
  • Dangerous shell operationline 447
    /bin/rm -f "$RESIDENT_MANAGER_CONFIG" "$RESIDENT_MANAGER_PLIST"

skills/codex-theme-studio/scripts/customize-theme-macos.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 58
    /bin/rm -rf "$THEME_DIR"
  • Dangerous shell operationline 85
    cleanup_temporary() { /bin/rm -f "$temporary"; }
  • Dangerous shell operationline 104
    /usr/bin/find "$THEME_DIR" -maxdepth 1 -type f -name 'background-*' ! -name "$image_name" -delete

skills/codex-theme-studio/scripts/doctor-macos.sh

  • Executable scriptline 1
    #!/bin/bash

skills/codex-theme-studio/scripts/import-preset-macos.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 37
    cleanup_temporary() { /bin/rm -rf "$temporary"; }
  • Dangerous shell operationline 41
    if [ -e "$DEST" ]; then /bin/rm -rf "$DEST"; fi

skills/codex-theme-studio/scripts/injector.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 207
    const timeout = setTimeout(() => controller.abort(), 2000);   try {     const response = await fetch(`http://127.0.0.1:${port}/json/list`, { signal: controller.signal });
  • Network accessline 208
    try {     const response = await fetch(`http://127.0.0.1:${port}/json/list`, { signal: controller.signal });     if (!response.ok) throw new Error(`HTTP ${response.status}`);
  • Network accessline 209
    const response = await fetch(`http://127.0.0.1:${port}/json/list`, { signal: controller.signal });

skills/codex-theme-studio/scripts/install-dream-skin-macos.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 24
    /bin/rm -rf "$temporary"
  • Dangerous shell operationline 45
    /bin/rm -rf "$previous"

skills/codex-theme-studio/scripts/install-resident-manager-macos.sh

  • Executable scriptline 1
    #!/bin/bash
  • Network accessline 41
    };   const xml = `<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  • Network accessline 42
    const xml = `<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"><dict>
  • Network accessline 43
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

skills/codex-theme-studio/scripts/list-presets.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/scripts/load-image-theme-macos.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 66
    /bin/rm -f "$THEME_DIR"/background.* "$THEME_DIR"/.*.tmp.jpg 2>/dev/null || true

skills/codex-theme-studio/scripts/pause-dream-skin-macos.sh

  • Executable scriptline 1
    #!/bin/bash

skills/codex-theme-studio/scripts/resident-manager-macos.sh

  • Executable scriptline 1
    #!/bin/bash

skills/codex-theme-studio/scripts/restore-dream-skin-macos.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 53
    /bin/rm -f "$STATE_PATH"
  • Dangerous shell operationline 55
    /bin/rm -f "$HOME/Desktop/Codex Dream Skin.command"
  • Dangerous shell operationline 56
    /bin/rm -f "$HOME/Desktop/Codex Dream Skin - Customize.command"
  • Dangerous shell operationline 57
    /bin/rm -f "$HOME/Desktop/Codex Dream Skin - Pause.command"
  • Dangerous shell operationline 58
    /bin/rm -f "$HOME/Desktop/Codex Dream Skin - Verify.command"
  • Dangerous shell operationline 59
    /bin/rm -f "$HOME/Desktop/Codex Dream Skin - Restore.command"

skills/codex-theme-studio/scripts/restore-version-macos.sh

  • Executable scriptline 1
    #!/bin/bash

skills/codex-theme-studio/scripts/start-dream-skin-macos.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 71
    /bin/rm -f "$STATE_PATH"
  • Dangerous shell operationline 108
    /bin/rm -f /tmp/dream-skin-verify.$$.json
  • Dangerous shell operationline 112
    /bin/rm -f "$STATE_PATH" /tmp/dream-skin-verify.$$.json
  • Dangerous shell operationline 115
    /bin/rm -f /tmp/dream-skin-verify.$$.json

skills/codex-theme-studio/scripts/status-dream-skin-macos.sh

  • Executable scriptline 1
    #!/bin/bash
  • Network accessline 74
    if [ "$DEEP" = "true" ]; then   if /usr/bin/curl --noproxy '*' --silent --fail --max-time 1 "http://127.0.0.1:${PORT}/json/version" >/dev/null 2>&1; then
  • Network accessline 75
    if /usr/bin/curl --noproxy '*' --silent --fail --max-time 1 "http://127.0.0.1:${PORT}/json/version" >/dev/null 2>&1; then

skills/codex-theme-studio/scripts/switch-theme-macos.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 34
    /usr/bin/find "$THEME_DIR" -type f -maxdepth 1 -delete 2>/dev/null || true

skills/codex-theme-studio/scripts/theme-config.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/scripts/verification-contract.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/scripts/verify-dream-skin-macos.sh

  • Executable scriptline 1
    #!/bin/bash

skills/codex-theme-studio/scripts/version-backup-state.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/scripts/write-theme.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/tests/base-theme-state.test.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/tests/resident-manager.test.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/tests/run-tests.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 25
    if /usr/bin/grep -n -E '/usr/bin/python3|(^|[[:space:]])eval([[:space:]]|$)' \
  • Dangerous shell operationline 42
    trap '/bin/rm -rf "$TMP"' EXIT

skills/codex-theme-studio/tests/skill-package.test.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/tests/verifier-contract.test.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/tests/version-backup-state.test.mjs

  • Executable scriptline 1
    Executable file

skills/codex-theme-studio/tests/zhijian-theme.test.mjs

  • Executable scriptline 1
    Executable file

skills/enterprise-clone-builder/references/web-clipper-usage.md

  • Network accessline 18
    bash "<WEB_CLIPPER_ROOT>/scripts/run_web_clipper.sh" \   --url "https://example.com/article" \
  • Network accessline 19
    --url "https://example.com/article" \
  • Network accessline 28
    # 先准备URL列表文件 cat > /tmp/enterprise_urls.txt << 'EOF' https://example.com/page1
  • Network accessline 29
    cat > /tmp/enterprise_urls.txt << 'EOF' https://example.com/page1 https://example.com/page2
  • Network accessline 30
    https://example.com/page1
  • Network accessline 31
    https://example.com/page2
  • Network accessline 32
    https://example.com/page3
  • Network accessline 48
    bash "<WEB_CLIPPER_ROOT>/scripts/run_web_clipper.sh" \   --url "https://example.com/products.html" \
  • Network accessline 49
    --url "https://example.com/products.html" \

skills/gpt56-sol-pro-consult/references/chrome-workflow.md

  • Network accessline 18
    3. Initialize the browser runtime from the Chrome plugin's own absolute `scripts/browser-client.mjs` path. 4. Select the Chrome extension binding with `agent.browsers.get("extension")` and read its complete documentation before interacting.
  • Network accessline 20
    5. Reuse an existing ChatGPT tab when available; otherwise create one and navigate directly to `https://chatgpt.com/`.

skills/gpt56-sol-pro-consult/scripts/build_attachment_bundle.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/gpt56-sol-pro-consult/scripts/check_packet_safety.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/gpt56-sol-pro-consult/scripts/extract_chatgpt_reply.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/gpt56-sol-pro-consult/scripts/run_gpt56_sol_pro_consult.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 346
    run_opencli(["browser", session, "open", "https://chatgpt.com/"], timeout=60)

skills/gpt56-sol-pro-consult/tests/test_model_selection.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/gpt56-sol-pro-consult/tests/test_skill_contract.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/assets/repo-template/SOURCE_MAP.md

  • Network accessline 21
    - `CLAIM_LEDGER.md` 的 high confidence fact 必须能回到 L1-fact,或至少有两个独立公开来源交叉验证。 - 标记 `used / selected / fetched / exported / done` 的公开来源必须提供可直接打开的 `http://` 或 `https://` URL;“公开检索入口”“厂商案例页”等描述不算来源。
  • Network accessline 22
    - 标记 `used / selected / fetched / exported / done` 的公开来源必须提供可直接打开的 `http://` 或 `https://` URL;“公开检索入口”“厂商案例页”等描述不算来源。

skills/leadbook/assets/repo-template/scripts/auto-seed-behavior.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/assets/repo-template/scripts/check-backend-language.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/assets/repo-template/scripts/check-evidence-feasibility.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/assets/repo-template/scripts/check-leadbook.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/assets/repo-template/scripts/export-kami-html.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/assets/repo-template/scripts/export-markdown.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/assets/repo-template/scripts/generate-kami-diagrams.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 347
    title = row.get("Visual Purpose") or row.get("Caption") or row.get("ID", "Diagram")     pattern_id = f"dots-{slug(row.get('ID', 'diagram'))}"     return f"""<svg xmlns="http://www.w3.org/2000/svg" width="{WIDTH}" height="{HEIGHT}" viewBox="
  • Network accessline 348
    pattern_id = f"dots-{slug(row.get('ID', 'diagram'))}"     return f"""<svg xmlns="http://www.w3.org/2000/svg" width="{WIDTH}" height="{HEIGHT}" viewBox="0 0 {WIDTH} {HEIGHT}" role="img" aria-label="{esc(title)}"> <defs>
  • Network accessline 349
    return f"""<svg xmlns="http://www.w3.org/2000/svg" width="{WIDTH}" height="{HEIGHT}" viewBox="0 0 {WIDTH} {HEIGHT}" role="img" aria-label="{esc(title)}">

skills/leadbook/assets/repo-template/scripts/leadbook-stage.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/assets/repo-template/scripts/prepare-pdf-visual-audit.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/assets/repo-template/scripts/render-pdf.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 38
    [Credential-related source omitted]
  • Access to secretsline 42
    [Credential-related source omitted]

skills/leadbook/assets/repo-template/scripts/sync-summary.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/assets/repo-template/scripts/xhs-research.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 24
    DEFAULT_BASE_URL = "http://127.0.0.1:18060"
  • Network accessline 52
    req = urllib.request.Request(url, data=data, headers=headers, method=method)
  • Network accessline 53
    try:         with urllib.request.urlopen(req, timeout=timeout) as resp:             body = resp.read().decode("utf-8")
  • Network accessline 54
    with urllib.request.urlopen(req, timeout=timeout) as resp:
  • Network accessline 111
    def note_url(feed_id: str) -> str:     return f"https://www.xiaohongshu.com/explore/{feed_id}"
  • Network accessline 112
    return f"https://www.xiaohongshu.com/explore/{feed_id}"

skills/leadbook/scripts/scaffold_leadbook.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/leadbook/tests/test_leadbook.py

  • Executable scriptline 1
    Executable file
  • Network accessline 196
    self.assertNotIn("xsec_token", serialized)         self.assertNotIn("raw", serialized)         self.assertEqual(public["url"], "https://www.xiaohongshu.com/explore/note-1")
  • Network accessline 197
    self.assertNotIn("raw", serialized)         self.assertEqual(public["url"], "https://www.xiaohongshu.com/explore/note-1")         with self.assertRaises(ValueError):
  • Network accessline 198
    self.assertEqual(public["url"], "https://www.xiaohongshu.com/explore/note-1")
  • Network accessline 200
    module.validate_base_url("https://example.com", allow_remote=False)
  • Network accessline 216
    ledger.write_text(                 header                 + "| B001 | job-posting | https://example.com/jobs/ai-operator | 企业招聘 AI 应用岗 |\n",
  • Network accessline 217
    header                 + "| B001 | job-posting | https://example.com/jobs/ai-operator | 企业招聘 AI 应用岗 |\n",                 encoding="utf-8",
  • Network accessline 218
    + "| B001 | job-posting | https://example.com/jobs/ai-operator | 企业招聘 AI 应用岗 |\n",
  • Network accessline 247
    "dist/book.pdf": "fake-pdf",                 "dist/qa/pdf-visual-audit.md": "audit_state: passed",                 "bibliography.md": "1. https://example.com/report/1",
  • Network accessline 248
    "dist/qa/pdf-visual-audit.md": "audit_state: passed",                 "bibliography.md": "1. https://example.com/report/1",             }.items():
  • Network accessline 249
    "bibliography.md": "1. https://example.com/report/1",

skills/light-plan-and-work/tests/test_contract.py

  • Executable scriptline 1
    Executable file

skills/scholar-stickers/SKILL.md

  • Network accessline 85
    4. 参数:`image "<prompt>" --resolution 768:960 --token-stdin`   5. Token 管道传入:`echo -n "<token>" | <python> -u <script> image "..." --token-stdin`   6. 生成完 `curl -sS -L -o portraits/{id}.png "<result_url>"` 落到交付目录的 `portraits/` 子目录
  • Network accessline 86
    5. Token 管道传入:`echo -n "<token>" | <python> -u <script> image "..." --token-stdin`   6. 生成完 `curl -sS -L -o portraits/{id}.png "<result_url>"` 落到交付目录的 `portraits/` 子目录   7. 若报"250 个任务上限",等 30 秒重试一次;最多重试 1 次
  • Network accessline 87
    6. 生成完 `curl -sS -L -o portraits/{id}.png "<result_url>"` 落到交付目录的 `portraits/` 子目录

skills/scholar-stickers/template.html

  • Network accessline 5
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>哲学,从惊讶与疑惑开始 · 教育哲学家贴纸(16:9 幻灯片版)</title> <link rel="preconnect" href="https://fonts.googleapis.com">
  • Network accessline 6
    <title>哲学,从惊讶与疑惑开始 · 教育哲学家贴纸(16:9 幻灯片版)</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  • Network accessline 7
    <link rel="preconnect" href="https://fonts.googleapis.com">
  • Network accessline 8
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  • Network accessline 9
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600;700;900&family=Noto+Sans+SC:wght@300;400;500;700&family=Cormorant+Garamond:ital,wght@0,400;0,600;0,700;1,400;1,600&display=swap" rel="stylesheet">

skills/skill-open-sourcer/SKILL.md

  • Network accessline 15
    Publish every public Skill from the single canonical repository: `https://github.com/zjp1997720/zhijian-skills`.

skills/skill-open-sourcer/references/readme-design.md

  • Network accessline 5
    This method is adapted from [`oil-oil/beautify-github-readme`](https://github.com/oil-oil/beautify-github-readme), licensed under MIT. See `third-party-notices.md` for the attribution and license text.

skills/skill-open-sourcer/references/third-party-notices.md

  • Network accessline 7
    - Project: `oil-oil/beautify-github-readme` - Source: https://github.com/oil-oil/beautify-github-readme
  • Network accessline 8
    - Source: https://github.com/oil-oil/beautify-github-readme

skills/skill-open-sourcer/references/workbuddy-marketplace.md

  • Network accessline 13
    1. Use the cloneable repository source `zjp1997720/zhijian-skills` or `https://github.com/zjp1997720/zhijian-skills.git`. A `/tree/main/skills` page is not a Git source. Use Git distribution for this catalog's relative plugin paths and comp
  • Network accessline 65
    The adapter-only branch does not require fabricated Skill Tags, release artwork, or launch posts. For initial evidence and the manifest-less cold-start regression, see [canonical PR #26](https://github.com/zjp1997720/zhijian-skills/pull/26)

skills/skill-open-sourcer/scripts/audit_release_readme.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/skill-open-sourcer/scripts/check_release_env.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/skill-open-sourcer/scripts/git_sync_guard.py

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

skills/skill-open-sourcer/scripts/manage_local_links.py

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

skills/skill-open-sourcer/scripts/portfolio.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/skill-open-sourcer/scripts/release_portfolio.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 241
    [Credential-related source omitted]
  • Access to secretsline 488
    [Credential-related source omitted]

skills/skill-open-sourcer/scripts/scan_skill_release.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 14
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]

skills/skill-open-sourcer/scripts/verify_isolated_install.py

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

skills/skill-open-sourcer/tests/test_audit_release_readme.py

  • Executable scriptline 1
    Executable file
  • Network accessline 29
    assets.mkdir(parents=True)         (assets / "hero.svg").write_text(             """<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 320" role="img" aria-labelledby="title desc" data-composition="input-to-output">
  • Network accessline 30
    (assets / "hero.svg").write_text(             """<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 320" role="img" aria-labelledby="title desc" data-composition="input-to-output"> <title>Demo Skill</title><desc>A concrete demo workf
  • Network accessline 31
    """<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 320" role="img" aria-labelledby="title desc" data-composition="input-to-output">
  • Network accessline 43
    [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
  • Network accessline 99
    svg = root / "assets" / "readme" / "hero.svg"             svg.write_text(                 """<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 320" role="img" aria-labelledby="title desc" data-composition="input-to-output">
  • Network accessline 100
    svg.write_text(                 """<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 320" role="img" aria-labelledby="title desc" data-composition="input-to-output"> <title>Demo</title><desc>A concrete demo workflow</desc><script>al
  • Network accessline 101
    """<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 320" role="img" aria-labelledby="title desc" data-composition="input-to-output">

skills/skill-open-sourcer/tests/test_release_selection.py

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

skills/skill-open-sourcer/tests/test_scan_skill_release.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 46
    [Credential-related source omitted]
  • Access to secretsline 48
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]
  • Access to secretsline 67
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 75
    [Credential-related source omitted]

skills/skill-open-sourcer/tests/test_skill_contract.py

  • Executable scriptline 1
    Executable file

skills/skill-open-sourcer/tests/test_verify_isolated_install.py

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

skills/web-clipper/SKILL.md

  • Network accessline 32
    title: "..." summary: "..." source: "https://..."
  • Network accessline 33
    summary: "..." source: "https://..." resource: "https://..."
  • Network accessline 34
    source: "https://..."
  • Network accessline 35
    resource: "https://..."
  • Network accessline 158
    - 脚本会自动调用 `https://r.jina.ai/<原始URL>`
  • Access to secretsline 173
    [Credential-related source omitted]
  • Access to secretsline 177
    [Credential-related source omitted]
  • Access to secretsline 404
    [Credential-related source omitted]
  • Access to secretsline 435
    [Credential-related source omitted]

skills/web-clipper/evals/evals.json

  • Network accessline 4
    {       "id": 1,       "prompt": "把这篇文章保存到我的本地 clipping 目录:https://letters.thedankoe.com/p/how-to-articulate-yourself-intelligently,保留标题、原链接、日期和正文。",
  • Network accessline 5
    "id": 1,       "prompt": "把这篇文章保存到我的本地 clipping 目录:https://letters.thedankoe.com/p/how-to-articulate-yourself-intelligently,保留标题、原链接、日期和正文。",       "expected_output": "生成 1 个 Markdown 文件,带 frontmatter,文件名包含日期和标题。",
  • Network accessline 6
    "prompt": "把这篇文章保存到我的本地 clipping 目录:https://letters.thedankoe.com/p/how-to-articulate-yourself-intelligently,保留标题、原链接、日期和正文。",
  • Network accessline 10
    {       "id": 2,       "prompt": "把这个 archive 页里最热门的前 20 篇文章都拉到本地,放到同一个目录下面:https://letters.thedankoe.com/archive?sort=top。",
  • Network accessline 11
    "id": 2,       "prompt": "把这个 archive 页里最热门的前 20 篇文章都拉到本地,放到同一个目录下面:https://letters.thedankoe.com/archive?sort=top。",       "expected_output": "批量保存 20 篇文章;若静态页面拿不全链接,应改用 browser 收集 URL 再交给脚本落地。",
  • Network accessline 12
    "prompt": "把这个 archive 页里最热门的前 20 篇文章都拉到本地,放到同一个目录下面:https://letters.thedankoe.com/archive?sort=top。",

skills/web-clipper/scripts/bootstrap.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 179
    rm -f "${PROJECT_ROOT}/.web-clipper-python3-check.log"
  • Dangerous shell operationline 183
    rm -f "${PROJECT_ROOT}/.web-clipper-python3-check.log"
  • Dangerous shell operationline 186
    rm -f "${PROJECT_ROOT}/.web-clipper-python-check.log"
  • Dangerous shell operationline 188
    rm -f "${PROJECT_ROOT}/.web-clipper-python-version.log"
  • Dangerous shell operationline 192
    rm -f "${PROJECT_ROOT}/.web-clipper-python-version.log"
  • Dangerous shell operationline 194
    rm -f "${PROJECT_ROOT}/.web-clipper-python-check.log"
  • Dangerous shell operationline 203
    if ! command -v sudo >"${PROJECT_ROOT}/.web-clipper-sudo-check.log" 2>&1; then
  • Dangerous shell operationline 204
    rm -f "${PROJECT_ROOT}/.web-clipper-sudo-check.log"
  • Dangerous shell operationline 207
    rm -f "${PROJECT_ROOT}/.web-clipper-sudo-check.log"
  • Dangerous shell operationline 209
    if sudo -n true >"${PROJECT_ROOT}/.web-clipper-sudo-ready.log" 2>&1; then
  • Dangerous shell operationline 210
    rm -f "${PROJECT_ROOT}/.web-clipper-sudo-ready.log"
  • Dangerous shell operationline 213
    rm -f "${PROJECT_ROOT}/.web-clipper-sudo-ready.log"
  • Dangerous shell operationline 223
    sudo -n "$@"
  • Dangerous shell operationline 234
    rm -f "${PROJECT_ROOT}/.web-clipper-brew-check.log"
  • Dangerous shell operationline 237
    rm -f "${PROJECT_ROOT}/.web-clipper-brew-check.log"
  • Dangerous shell operationline 245
    rm -f "${PROJECT_ROOT}/.web-clipper-apt-check.log"
  • Dangerous shell operationline 248
    rm -f "${PROJECT_ROOT}/.web-clipper-apt-check.log"
  • Dangerous shell operationline 251
    rm -f "${PROJECT_ROOT}/.web-clipper-dnf-check.log"
  • Dangerous shell operationline 254
    rm -f "${PROJECT_ROOT}/.web-clipper-dnf-check.log"
  • Dangerous shell operationline 257
    rm -f "${PROJECT_ROOT}/.web-clipper-yum-check.log"
  • Dangerous shell operationline 260
    rm -f "${PROJECT_ROOT}/.web-clipper-yum-check.log"
  • Dangerous shell operationline 263
    rm -f "${PROJECT_ROOT}/.web-clipper-pacman-check.log"
  • Dangerous shell operationline 266
    rm -f "${PROJECT_ROOT}/.web-clipper-pacman-check.log"
  • Dangerous shell operationline 269
    rm -f "${PROJECT_ROOT}/.web-clipper-winget-check.log"
  • Dangerous shell operationline 272
    rm -f "${PROJECT_ROOT}/.web-clipper-winget-check.log"
  • Dangerous shell operationline 275
    rm -f "${PROJECT_ROOT}/.web-clipper-choco-check.log"
  • Dangerous shell operationline 278
    rm -f "${PROJECT_ROOT}/.web-clipper-choco-check.log"
  • Dangerous shell operationline 364
    rm -f "${PROJECT_ROOT}/.web-clipper-browser-check.log"
  • Dangerous shell operationline 367
    rm -f "${PROJECT_ROOT}/.web-clipper-browser-check.log"

skills/web-clipper/scripts/clip_articles.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 20
    DEFAULT_UA = "Mozilla/5.0 OpenClaw web-clipper" METASO_API_URL = "https://metaso.cn/api/v1/reader"
  • Network accessline 21
    METASO_API_URL = "https://metaso.cn/api/v1/reader"
  • Network accessline 22
    JINA_READER_PREFIX = "https://r.jina.ai/"
  • Network accessline 154
    def fetch(self, url: str) -> str:
  • Network accessline 155
    req = urllib.request.Request(url, headers={"User-Agent": self.user_agent})
  • Network accessline 156
    with urllib.request.urlopen(req, context=self.ctx, timeout=self.timeout) as r:
  • Network accessline 179
    if host != "t.co":             return url         req = urllib.request.Request(url, headers={"User-Agent": self.user_agent}, method="HEAD")
  • Network accessline 180
    return url         req = urllib.request.Request(url, headers={"User-Agent": self.user_agent}, method="HEAD")         try:
  • Network accessline 181
    req = urllib.request.Request(url, headers={"User-Agent": self.user_agent}, method="HEAD")
  • Network accessline 182
    try:             with urllib.request.urlopen(req, context=self.ctx, timeout=self.timeout) as r:                 return r.geturl() or url
  • Network accessline 183
    with urllib.request.urlopen(req, context=self.ctx, timeout=self.timeout) as r:
  • Network accessline 203
    def fetch_fxtwitter_status(self, username: str, status_id: str) -> Optional[dict]:         api_url = f"https://api.fxtwitter.com/{urllib.parse.quote(username)}/status/{status_id}"
  • Network accessline 204
    api_url = f"https://api.fxtwitter.com/{urllib.parse.quote(username)}/status/{status_id}"
  • Network accessline 205
    req = urllib.request.Request(
  • Network accessline 211
    )         try:             with urllib.request.urlopen(req, context=self.ctx, timeout=self.timeout) as r:
  • Network accessline 212
    try:             with urllib.request.urlopen(req, context=self.ctx, timeout=self.timeout) as r:                 return json.loads(r.read().decode("utf-8", errors="ignore"))
  • Network accessline 213
    with urllib.request.urlopen(req, context=self.ctx, timeout=self.timeout) as r:
  • Network accessline 229
    screen_name = author.get("screen_name") or username         tweet_id = tweet.get("id") or status_id         return f"https://x.com/{screen_name}/article/{tweet_id}"
  • Network accessline 231
    return f"https://x.com/{screen_name}/article/{tweet_id}"
  • Network accessline 481
    def parse_via_jina(self, url: str, archive: Optional[str]) -> Optional[Article]:         try:             text = self.fetch(JINA_READER_PREFIX + url)
  • Network accessline 482
    try:             text = self.fetch(JINA_READER_PREFIX + url)         except Exception:
  • Network accessline 483
    text = self.fetch(JINA_READER_PREFIX + url)
  • Access to secretsline 493
    [Credential-related source omitted]
  • Access to secretsline 494
    [Credential-related source omitted]
  • Network accessline 495
    return None         payload = json.dumps({"url": url}).encode("utf-8")         req = urllib.request.Request(
  • Network accessline 496
    payload = json.dumps({"url": url}).encode("utf-8")         req = urllib.request.Request(             METASO_API_URL,
  • Network accessline 497
    req = urllib.request.Request(
  • Access to secretsline 501
    [Credential-related source omitted]
  • Network accessline 506
    )         try:             with urllib.request.urlopen(req, context=self.ctx, timeout=self.timeout) as r:
  • Network accessline 507
    try:             with urllib.request.urlopen(req, context=self.ctx, timeout=self.timeout) as r:                 return r.read().decode("utf-8", errors="ignore")
  • Network accessline 508
    with urllib.request.urlopen(req, context=self.ctx, timeout=self.timeout) as r:
  • Network accessline 533
    try:             tried.append("static")             html_text = self.fetch(url)
  • Network accessline 534
    tried.append("static")             html_text = self.fetch(url)             article = self.parse_from_html(url, html_text, archive)
  • Network accessline 535
    html_text = self.fetch(url)
  • Network accessline 773
    else:         page_url = validate_http_url(args.url)         html_text = clipper.fetch(page_url)
  • Network accessline 774
    page_url = validate_http_url(args.url)         html_text = clipper.fetch(page_url)         urls = clipper.extract_links(
  • Network accessline 775
    html_text = clipper.fetch(page_url)

skills/web-clipper/scripts/run_web_clipper.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 69
    rm -f "${PROJECT_ROOT}/.web-clipper-python3-check.log"
  • Dangerous shell operationline 73
    rm -f "${PROJECT_ROOT}/.web-clipper-python3-check.log"
  • Dangerous shell operationline 76
    rm -f "${PROJECT_ROOT}/.web-clipper-python-check.log"
  • Dangerous shell operationline 78
    rm -f "${PROJECT_ROOT}/.web-clipper-python-version.log"
  • Dangerous shell operationline 82
    rm -f "${PROJECT_ROOT}/.web-clipper-python-version.log"
  • Dangerous shell operationline 84
    rm -f "${PROJECT_ROOT}/.web-clipper-python-check.log"

skills/web-clipper/tests/test_web_clipper.py

  • Executable scriptline 1
    Executable file
  • Network accessline 24
    <a href="/posts/one">Duplicate</a>         <a href="/posts/two#comments">Comments</a>         <a href="https://other.example/posts/three">Other</a>
  • Network accessline 25
    <a href="/posts/two#comments">Comments</a>         <a href="https://other.example/posts/three">Other</a>         """
  • Network accessline 26
    <a href="https://other.example/posts/three">Other</a>
  • Network accessline 27
    """         urls = clip_articles.Clipper().extract_links(             "https://example.com/archive",
  • Network accessline 28
    urls = clip_articles.Clipper().extract_links(             "https://example.com/archive",             html,
  • Network accessline 29
    "https://example.com/archive",
  • Network accessline 32
    same_origin_only=True,         )         self.assertEqual(["https://example.com/posts/one"], urls)
  • Network accessline 34
    self.assertEqual(["https://example.com/posts/one"], urls)
  • Network accessline 46
    """         article = clip_articles.Clipper().parse_from_html(             "https://example.com/posts/example", html, None
  • Network accessline 47
    article = clip_articles.Clipper().parse_from_html(             "https://example.com/posts/example", html, None         )
  • Network accessline 48
    "https://example.com/posts/example", html, None
  • Network accessline 58
    self.assertIn('title: "Example Article"', rendered)         self.assertIn('extractor: "static"', rendered)         self.assertIn('source: "https://example.com/posts/example"', rendered)
  • Network accessline 59
    self.assertIn('extractor: "static"', rendered)         self.assertIn('source: "https://example.com/posts/example"', rendered)         self.assertIn("# Example Article", rendered)
  • Network accessline 60
    self.assertIn('source: "https://example.com/posts/example"', rendered)
  • Network accessline 66
    clip_articles.validate_http_url(url)         self.assertEqual(             "https://example.com/post",
  • Network accessline 67
    self.assertEqual(             "https://example.com/post",             clip_articles.validate_http_url("https://example.com/post"),
  • Network accessline 68
    "https://example.com/post",
  • Network accessline 69
    clip_articles.validate_http_url("https://example.com/post"),
  • Network accessline 119
    "single",                     "--url",                     "https://example.com/post",
  • Network accessline 120
    "--url",                     "https://example.com/post",                     "--output-dir",
  • Network accessline 121
    "https://example.com/post",

skills/wechat-article-search/SKILL.md

  • Broad permissionsline 1
    Bash,Read

skills/wechat-article-search/package-lock.json

  • Network accessline 14
    "node_modules/boolbase": {       "version": "1.0.0",       "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
  • Network accessline 15
    "version": "1.0.0",       "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",       "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
  • Network accessline 16
    "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
  • Network accessline 20
    "node_modules/cheerio": {       "version": "1.2.0",       "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
  • Network accessline 21
    "version": "1.2.0",       "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",       "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==",
  • Network accessline 22
    "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
  • Network accessline 40
    },       "funding": {         "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
  • Network accessline 41
    "funding": {         "url": "https://github.com/cheeriojs/cheerio?sponsor=1"       }
  • Network accessline 42
    "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
  • Network accessline 45
    "node_modules/cheerio-select": {       "version": "2.1.0",       "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
  • Network accessline 46
    "version": "2.1.0",       "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",       "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
  • Network accessline 47
    "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
  • Network accessline 57
    },       "funding": {         "url": "https://github.com/sponsors/fb55"
  • Network accessline 58
    "funding": {         "url": "https://github.com/sponsors/fb55"       }
  • Network accessline 59
    "url": "https://github.com/sponsors/fb55"
  • Network accessline 62
    "node_modules/css-select": {       "version": "5.2.2",       "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
  • Network accessline 63
    "version": "5.2.2",       "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",       "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
  • Network accessline 64
    "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
  • Network accessline 73
    },       "funding": {         "url": "https://github.com/sponsors/fb55"
  • Network accessline 74
    "funding": {         "url": "https://github.com/sponsors/fb55"       }
  • Network accessline 75
    "url": "https://github.com/sponsors/fb55"
  • Network accessline 78
    "node_modules/css-what": {       "version": "6.2.2",       "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
  • Network accessline 79
    "version": "6.2.2",       "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",       "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
  • Network accessline 80
    "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
  • Network accessline 85
    },       "funding": {         "url": "https://github.com/sponsors/fb55"
  • Network accessline 86
    "funding": {         "url": "https://github.com/sponsors/fb55"       }
  • Network accessline 87
    "url": "https://github.com/sponsors/fb55"
  • Network accessline 90
    "node_modules/dom-serializer": {       "version": "2.0.0",       "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
  • Network accessline 91
    "version": "2.0.0",       "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",       "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
  • Network accessline 92
    "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
  • Network accessline 99
    },       "funding": {         "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
  • Network accessline 100
    "funding": {         "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"       }
  • Network accessline 101
    "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
  • Network accessline 104
    "node_modules/domelementtype": {       "version": "2.3.0",       "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
  • Network accessline 105
    "version": "2.3.0",       "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",       "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
  • Network accessline 106
    "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
  • Network accessline 109
    {           "type": "github",           "url": "https://github.com/sponsors/fb55"
  • Network accessline 110
    "type": "github",           "url": "https://github.com/sponsors/fb55"         }
  • Network accessline 111
    "url": "https://github.com/sponsors/fb55"
  • Network accessline 116
    "node_modules/domhandler": {       "version": "5.0.3",       "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
  • Network accessline 117
    "version": "5.0.3",       "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",       "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
  • Network accessline 118
    "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
  • Network accessline 126
    },       "funding": {         "url": "https://github.com/fb55/domhandler?sponsor=1"
  • Network accessline 127
    "funding": {         "url": "https://github.com/fb55/domhandler?sponsor=1"       }
  • Network accessline 128
    "url": "https://github.com/fb55/domhandler?sponsor=1"
  • Network accessline 131
    "node_modules/domutils": {       "version": "3.2.2",       "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
  • Network accessline 132
    "version": "3.2.2",       "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",       "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
  • Network accessline 133
    "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
  • Network accessline 140
    },       "funding": {         "url": "https://github.com/fb55/domutils?sponsor=1"
  • Network accessline 141
    "funding": {         "url": "https://github.com/fb55/domutils?sponsor=1"       }
  • Network accessline 142
    "url": "https://github.com/fb55/domutils?sponsor=1"
  • Network accessline 145
    "node_modules/encoding-sniffer": {       "version": "0.2.1",       "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
  • Network accessline 146
    "version": "0.2.1",       "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",       "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
  • Network accessline 147
    "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
  • Network accessline 153
    },       "funding": {         "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
  • Network accessline 154
    "funding": {         "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"       }
  • Network accessline 155
    "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
  • Network accessline 158
    "node_modules/entities": {       "version": "4.5.0",       "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
  • Network accessline 159
    "version": "4.5.0",       "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",       "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
  • Network accessline 160
    "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
  • Network accessline 165
    },       "funding": {         "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 166
    "funding": {         "url": "https://github.com/fb55/entities?sponsor=1"       }
  • Network accessline 167
    "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 170
    "node_modules/htmlparser2": {       "version": "10.1.0",       "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
  • Network accessline 171
    "version": "10.1.0",       "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",       "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
  • Network accessline 172
    "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
  • Network accessline 173
    "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",       "funding": [         "https://github.com/fb55/htmlparser2?sponsor=1",
  • Network accessline 174
    "funding": [         "https://github.com/fb55/htmlparser2?sponsor=1",         {
  • Network accessline 175
    "https://github.com/fb55/htmlparser2?sponsor=1",
  • Network accessline 176
    {           "type": "github",           "url": "https://github.com/sponsors/fb55"
  • Network accessline 177
    "type": "github",           "url": "https://github.com/sponsors/fb55"         }
  • Network accessline 178
    "url": "https://github.com/sponsors/fb55"
  • Network accessline 189
    "node_modules/htmlparser2/node_modules/entities": {       "version": "7.0.1",       "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
  • Network accessline 190
    "version": "7.0.1",       "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",       "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
  • Network accessline 191
    "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
  • Network accessline 196
    },       "funding": {         "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 197
    "funding": {         "url": "https://github.com/fb55/entities?sponsor=1"       }
  • Network accessline 198
    "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 201
    "node_modules/iconv-lite": {       "version": "0.6.3",       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
  • Network accessline 202
    "version": "0.6.3",       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",       "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
  • Network accessline 203
    "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
  • Network accessline 213
    "node_modules/nth-check": {       "version": "2.1.1",       "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
  • Network accessline 214
    "version": "2.1.1",       "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",       "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
  • Network accessline 215
    "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
  • Network accessline 220
    },       "funding": {         "url": "https://github.com/fb55/nth-check?sponsor=1"
  • Network accessline 221
    "funding": {         "url": "https://github.com/fb55/nth-check?sponsor=1"       }
  • Network accessline 222
    "url": "https://github.com/fb55/nth-check?sponsor=1"
  • Network accessline 225
    "node_modules/parse5": {       "version": "7.3.0",       "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
  • Network accessline 226
    "version": "7.3.0",       "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",       "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
  • Network accessline 227
    "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
  • Network accessline 232
    },       "funding": {         "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 233
    "funding": {         "url": "https://github.com/inikulin/parse5?sponsor=1"       }
  • Network accessline 234
    "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 237
    "node_modules/parse5-htmlparser2-tree-adapter": {       "version": "7.1.0",       "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
  • Network accessline 238
    "version": "7.1.0",       "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",       "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wT
  • Network accessline 239
    "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
  • Network accessline 245
    },       "funding": {         "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 246
    "funding": {         "url": "https://github.com/inikulin/parse5?sponsor=1"       }
  • Network accessline 247
    "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 250
    "node_modules/parse5-parser-stream": {       "version": "7.1.2",       "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
  • Network accessline 251
    "version": "7.1.2",       "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",       "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
  • Network accessline 252
    "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
  • Network accessline 257
    },       "funding": {         "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 258
    "funding": {         "url": "https://github.com/inikulin/parse5?sponsor=1"       }
  • Network accessline 259
    "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 262
    "node_modules/parse5/node_modules/entities": {       "version": "6.0.1",       "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
  • Network accessline 263
    "version": "6.0.1",       "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",       "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
  • Network accessline 264
    "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
  • Network accessline 269
    },       "funding": {         "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 270
    "funding": {         "url": "https://github.com/fb55/entities?sponsor=1"       }
  • Network accessline 271
    "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 274
    "node_modules/safer-buffer": {       "version": "2.1.2",       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
  • Network accessline 275
    "version": "2.1.2",       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
  • Network accessline 276
    "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
  • Network accessline 280
    "node_modules/undici": {       "version": "7.28.0",       "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz",
  • Network accessline 281
    "version": "7.28.0",       "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz",       "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==",
  • Network accessline 282
    "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz",
  • Network accessline 289
    "node_modules/whatwg-encoding": {       "version": "3.1.1",       "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
  • Network accessline 290
    "version": "3.1.1",       "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",       "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
  • Network accessline 291
    "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
  • Network accessline 302
    "node_modules/whatwg-mimetype": {       "version": "4.0.0",       "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
  • Network accessline 303
    "version": "4.0.0",       "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",       "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
  • Network accessline 304
    "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",

skills/wechat-article-search/package.json

  • Executable scriptline 1
    Executable file

skills/wechat-article-search/scripts/search_wechat.js

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 43
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',   'Host': 'weixin.sogou.com',   'Referer': 'https://weixin.sogou.com/',
  • Network accessline 44
    'Host': 'weixin.sogou.com',   'Referer': 'https://weixin.sogou.com/', };
  • Network accessline 45
    'Referer': 'https://weixin.sogou.com/',
  • Network accessline 166
    try {     const resp = await request({       url: 'https://v.sogou.com/v?ie=utf8&query=&p=40030600',
  • Network accessline 167
    const resp = await request({       url: 'https://v.sogou.com/v?ie=utf8&query=&p=40030600',       headers: {
  • Network accessline 168
    url: 'https://v.sogou.com/v?ie=utf8&query=&p=40030600',
  • Network accessline 265
    // 典型形态:   //   var url = '';   //   url += 'https://mp.';
  • Network accessline 266
    //   var url = '';   //   url += 'https://mp.';   //   url += 'weixin.qq.com/...';
  • Network accessline 267
    //   url += 'https://mp.';
  • Network accessline 522
    if (url.startsWith('/')) {       url = `https://weixin.sogou.com${url}`;
  • Network accessline 523
    url = `https://weixin.sogou.com${url}`;
  • Network accessline 635
    const encodedQuery = encodeURIComponent(query);       const url = `https://weixin.sogou.com/weixin?query=${encodedQuery}&s_from=input&_sug_=n&type=2&page=${page}&ie=utf8`;
  • Network accessline 636
    const url = `https://weixin.sogou.com/weixin?query=${encodedQuery}&s_from=input&_sug_=n&type=2&page=${page}&ie=utf8`;

skills/wechat-article-search/tests/parser.test.js

  • Executable scriptline 1
    Executable file
  • Network accessline 16
    assert.equal(articles[0].title, 'Codex 模型路由实战');   assert.equal(articles[0].source, '智见 AI');   assert.equal(articles[0].url, 'https://weixin.sogou.com/link?url=demo');
  • Network accessline 17
    assert.equal(articles[0].source, '智见 AI');   assert.equal(articles[0].url, 'https://weixin.sogou.com/link?url=demo'); });
  • Network accessline 18
    assert.equal(articles[0].url, 'https://weixin.sogou.com/link?url=demo');
  • Network accessline 21
    test('extracts both meta and assembled JavaScript redirect URLs', () => {   assert.equal(     extractRedirectUrlFromHtml('<meta http-equiv="refresh" content="0; url=https://mp.weixin.qq.com/s/a">'),
  • Network accessline 22
    assert.equal(     extractRedirectUrlFromHtml('<meta http-equiv="refresh" content="0; url=https://mp.weixin.qq.com/s/a">'),     'https://mp.weixin.qq.com/s/a',
  • Network accessline 23
    extractRedirectUrlFromHtml('<meta http-equiv="refresh" content="0; url=https://mp.weixin.qq.com/s/a">'),
  • Network accessline 24
    'https://mp.weixin.qq.com/s/a',
  • Network accessline 25
    );   assert.equal(     extractRedirectUrlFromHtml("var url='';url += 'https://mp.weixin.';url += 'qq.com/s/b';window.location.replace(url)"),
  • Network accessline 26
    assert.equal(     extractRedirectUrlFromHtml("var url='';url += 'https://mp.weixin.';url += 'qq.com/s/b';window.location.replace(url)"),     'https://mp.weixin.qq.com/s/b',
  • Network accessline 27
    extractRedirectUrlFromHtml("var url='';url += 'https://mp.weixin.';url += 'qq.com/s/b';window.location.replace(url)"),
  • Network accessline 28
    'https://mp.weixin.qq.com/s/b',

skills/wechat-styler/SKILL.md

  • Network accessline 22
    ![WeChat Styler 左右并列效果预览](https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/img/wechat-styler-before-after-recent.png)

skills/wechat-styler/assets/brand-cta/manifest.json

  • Network accessline 7
    "opening": {       "file": "zhijian-cta-opening-flow-376b7c890008.gif",       "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-opening-flow-376b7c890008.gif",
  • Network accessline 8
    "file": "zhijian-cta-opening-flow-376b7c890008.gif",       "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-opening-flow-376b7c890008.gif",       "sha256": "376b7c89000817b0d050bb1674578563ba35017
  • Network accessline 9
    "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-opening-flow-376b7c890008.gif",
  • Network accessline 22
    "ending": {       "file": "zhijian-cta-ending-flow-5375c80db38d.gif",       "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-ending-flow-5375c80db38d.gif",
  • Network accessline 23
    "file": "zhijian-cta-ending-flow-5375c80db38d.gif",       "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-ending-flow-5375c80db38d.gif",       "sha256": "5375c80db38d67a5c1e11514f1c7bfab50311058a
  • Network accessline 24
    "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-ending-flow-5375c80db38d.gif",
  • Network accessline 74
    "height": 272,           "alt": "关注大鹏,把 AI 用进真实工作",           "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-opening-flow-f63ec0d7ddd0.gif"
  • Network accessline 75
    "alt": "关注大鹏,把 AI 用进真实工作",           "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-opening-flow-f63ec0d7ddd0.gif"         },
  • Network accessline 76
    "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-opening-flow-f63ec0d7ddd0.gif"
  • Network accessline 82
    "height": 300,           "alt": "有用,就留一份,点赞 · 收藏 · 转给需要的人",           "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-ending-flow-da8009fbeaa2.gif"
  • Network accessline 83
    "alt": "有用,就留一份,点赞 · 收藏 · 转给需要的人",           "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-ending-flow-da8009fbeaa2.gif"         }
  • Network accessline 84
    "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-ending-flow-da8009fbeaa2.gif"
  • Network accessline 97
    "height": 400,           "alt": "关注大鹏,把 AI 用进真实工作",           "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-opening-094cbecddef5.gif"
  • Network accessline 98
    "alt": "关注大鹏,把 AI 用进真实工作",           "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-opening-094cbecddef5.gif"         },
  • Network accessline 99
    "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-opening-094cbecddef5.gif"
  • Network accessline 105
    "height": 500,           "alt": "有用,就留一份:点赞、收藏、转给需要的人",           "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-ending-12ac690644ff.gif"
  • Network accessline 106
    "alt": "有用,就留一份:点赞、收藏、转给需要的人",           "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-ending-12ac690644ff.gif"         }
  • Network accessline 107
    "url": "https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/zhijian-cta-ending-12ac690644ff.gif"

skills/wechat-styler/assets/brand-cta/zhijian-cta-ending.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 360 150" preserveAspectRatio="xMidYMin meet" style="display:block;width:100%;max-width:480px;margin:0 auto;" role="img" aria-label="有用,就留一份:点赞、收藏、转给需要的人" data-semantic-text="

skills/wechat-styler/assets/brand-cta/zhijian-cta-opening.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 360 136" preserveAspectRatio="xMidYMin meet" style="display:block;width:100%;max-width:480px;margin:0 auto;" role="img" aria-label="关注大鹏,把 AI 用进真实工作" data-semantic-text="关注大鹏

skills/wechat-styler/package-lock.json

  • Network accessline 19
    "node_modules/argparse": {       "version": "2.0.1",       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
  • Network accessline 20
    "version": "2.0.1",       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
  • Network accessline 21
    "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
  • Network accessline 25
    "node_modules/fdir": {       "version": "6.5.0",       "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
  • Network accessline 26
    "version": "6.5.0",       "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",       "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
  • Network accessline 27
    "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
  • Network accessline 42
    "node_modules/js-yaml": {       "version": "4.3.0",       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
  • Network accessline 43
    "version": "4.3.0",       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",       "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
  • Network accessline 44
    "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
  • Network accessline 47
    {           "type": "github",           "url": "https://github.com/sponsors/puzrin"
  • Network accessline 48
    "type": "github",           "url": "https://github.com/sponsors/puzrin"         },
  • Network accessline 49
    "url": "https://github.com/sponsors/puzrin"
  • Network accessline 51
    {           "type": "github",           "url": "https://github.com/sponsors/nodeca"
  • Network accessline 52
    "type": "github",           "url": "https://github.com/sponsors/nodeca"         }
  • Network accessline 53
    "url": "https://github.com/sponsors/nodeca"
  • Network accessline 64
    "node_modules/marked": {       "version": "12.0.2",       "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
  • Network accessline 65
    "version": "12.0.2",       "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",       "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
  • Network accessline 66
    "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
  • Network accessline 76
    "node_modules/picomatch": {       "version": "4.0.5",       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
  • Network accessline 77
    "version": "4.0.5",       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",       "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
  • Network accessline 78
    "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
  • Network accessline 83
    },       "funding": {         "url": "https://github.com/sponsors/jonschlinkert"
  • Network accessline 84
    "funding": {         "url": "https://github.com/sponsors/jonschlinkert"       }
  • Network accessline 85
    "url": "https://github.com/sponsors/jonschlinkert"
  • Network accessline 88
    "node_modules/playwright-core": {       "version": "1.61.1",       "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz",
  • Network accessline 89
    "version": "1.61.1",       "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz",       "integrity": "sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==",
  • Network accessline 90
    "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz",
  • Network accessline 101
    "node_modules/tinyglobby": {       "version": "0.2.17",       "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
  • Network accessline 102
    "version": "0.2.17",       "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",       "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
  • Network accessline 103
    "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
  • Network accessline 112
    },       "funding": {         "url": "https://github.com/sponsors/SuperchupuDev"
  • Network accessline 113
    "funding": {         "url": "https://github.com/sponsors/SuperchupuDev"       }
  • Network accessline 114
    "url": "https://github.com/sponsors/SuperchupuDev"

skills/wechat-styler/package.json

  • Executable scriptline 1
    Executable file

skills/wechat-styler/references/brand-cta.md

  • Network accessline 32
    <section data-wechat-cta="opening" data-zhijian-cta="v7-flow-gif" style="max-width:<主题宽度>px;margin:0 auto 18px;padding:24px 0 0;line-height:0;"><img data-wechat-cta-image="opening" src="https://…/zhijian-cta-opening-flow-376b7c890008.gif" a
  • Network accessline 38
    <section data-wechat-cta="opening" data-zhijian-cta="v6" style="max-width:<主题宽度>px;margin:0 auto 18px;padding:24px 0 0;line-height:0;"><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 360 136" style="display:block;width:100

skills/wechat-styler/references/opencli-injection.md

  • Network accessline 40
    export OPENCLI_PROFILE="<your-opencli-profile>" export WX_EDITOR_URL="https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2..."
  • Network accessline 41
    export WX_EDITOR_URL="https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2..."

skills/wechat-styler/references/svg-animation-design.md

  • Possible obfuscationline 184
    const binary = atob(b64);

skills/wechat-styler/scripts/brand-cta.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 32
    if (viewBox !== a.viewBox) throw new Error(`brand CTA ${a.file} viewBox ${viewBox} does not match manifest ${a.viewBox}`);   const alt = escape(a.alt);   const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="${a.viewBox
  • Network accessline 33
    const alt = escape(a.alt);   const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="${a.viewBox}" preserveAspectRatio="xMidYMin meet" style="display:block;width:100%;height:auto;" role="img" aria-label="${alt}" data-alt=
  • Network accessline 34
    const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="${a.viewBox}" preserveAspectRatio="xMidYMin meet" style="display:block;width:100%;height:auto;" role="img" aria-label="${alt}" data-alt="${alt}" data-semantic-text="

skills/wechat-styler/scripts/components.mjs

  • Executable scriptline 1
    Executable file

skills/wechat-styler/scripts/content-density-audit.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/wechat-styler/scripts/convert.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 534
    const clay = theme.accent_color || '#B85235';   return `<!-- 文末结尾标记 --> <section data-wechat-block="end-mark" style="max-width:${theme.max_width}px;margin:0 auto;padding:0 16px 28px;line-height:0;text-align:left;background-color:${theme.bac
  • Network accessline 535
    return `<!-- 文末结尾标记 --> <section data-wechat-block="end-mark" style="max-width:${theme.max_width}px;margin:0 auto;padding:0 16px 28px;line-height:0;text-align:left;background-color:${theme.background_color};"><svg xmlns="http://www.w3.org/2
  • Network accessline 536
    <section data-wechat-block="end-mark" style="max-width:${theme.max_width}px;margin:0 auto;padding:0 16px 28px;line-height:0;text-align:left;background-color:${theme.background_color};"><svg xmlns="http://www.w3.org/2000/svg" width="76" heig

skills/wechat-styler/scripts/generate-cover-animation.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 873
    function coverSvgOpen(W, H, bg, extraAttrs = '') {   return `<svg${extraAttrs} xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 ${W} ${n1(H)}" preserveAspectRatio="xMidYMin meet" style="display:block;width:100%;max-width:${COVER
  • Network accessline 874
    return `<svg${extraAttrs} xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 ${W} ${n1(H)}" preserveAspectRatio="xMidYMin meet" style="display:block;width:100%;max-width:${COVER_MAX_W}px;margin:0 auto;"><rect x="0" y="0" width="${

skills/wechat-styler/scripts/generate-preview.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 50
    这是一段正文,用来展示正文的字体、字号、行高和颜色。这段文字包含**加粗文本**和\`行内代码\`,以及[链接文本](https://example.com)。

skills/wechat-styler/scripts/inject-to-wechat.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/wechat-styler/scripts/mobile-visual-qa.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/wechat-styler/scripts/qa-browser.mjs

  • Executable scriptline 1
    Executable file

skills/wechat-styler/scripts/validate.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/wechat-styler/scripts/wechat-image-hosts.mjs

  • Executable scriptline 1
    Executable file

skills/wechat-styler/scripts/wechat-image-pipeline.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    async function request(url, options, timeoutMs) {   const response = await fetch(url, { ...options, signal: AbortSignal.timeout(timeoutMs) });
  • Network accessline 26
    const response = await fetch(url, { ...options, signal: AbortSignal.timeout(timeoutMs) });
  • Network accessline 200
    quality: options.quality ?? 85,     timeoutMs: options.timeoutMs ?? 30000,     picgoServer: options.picgoServer ?? 'http://127.0.0.1:36677',
  • Network accessline 201
    timeoutMs: options.timeoutMs ?? 30000,     picgoServer: options.picgoServer ?? 'http://127.0.0.1:36677',   };
  • Network accessline 202
    picgoServer: options.picgoServer ?? 'http://127.0.0.1:36677',

skills/wechat-styler/scripts/wechat-opencli.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 67
    const appmsgid = typeof state.appmsgid === 'string'     ? state.appmsgid     : new URL(url || 'https://mp.weixin.qq.com/').searchParams.get('appmsgid') || '';
  • Network accessline 68
    ? state.appmsgid     : new URL(url || 'https://mp.weixin.qq.com/').searchParams.get('appmsgid') || '';   const evidence = {
  • Network accessline 69
    : new URL(url || 'https://mp.weixin.qq.com/').searchParams.get('appmsgid') || '';
  • Network accessline 107
    let url;       try { url = new URL(state.url); } catch { return null; }       const isEditor = url.origin === 'https://mp.weixin.qq.com'
  • Network accessline 108
    try { url = new URL(state.url); } catch { return null; }       const isEditor = url.origin === 'https://mp.weixin.qq.com'         && url.pathname === '/cgi-bin/appmsg'
  • Network accessline 109
    const isEditor = url.origin === 'https://mp.weixin.qq.com'
  • Possible obfuscationline 405
    const binary = atob(${JSON.stringify(payload.base64)});

skills/wechat-styler/scripts/wechat-publish-core.mjs

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 125
    const binary = atob("${encoded}");
  • Possible obfuscationline 178
    const binary = atob(chunks.join(""));

skills/wechat-styler/tests/brand-cta.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 18
    const GIF_BASE='https://obsidian-1344509300.cos.ap-beijing.myqcloud.com/obsidian/2026/03/';
  • Network accessline 97
    const v6Html=applyBrandCta(shell,{style:'svg'});  const v7Html=applyBrandCta(shell);  const loose=shell.replace('<p>',`<img src="${GIF_BASE+GIF.opening.file}?v=1"><img src="https://mmbiz.qpic.cn/x/${GIF.ending.file}"><p>`);
  • Network accessline 98
    const v7Html=applyBrandCta(shell);  const loose=shell.replace('<p>',`<img src="${GIF_BASE+GIF.opening.file}?v=1"><img src="https://mmbiz.qpic.cn/x/${GIF.ending.file}"><p>`);  for(const input of [v5Html,v6Html,v7Html,loose]){
  • Network accessline 99
    const loose=shell.replace('<p>',`<img src="${GIF_BASE+GIF.opening.file}?v=1"><img src="https://mmbiz.qpic.cn/x/${GIF.ending.file}"><p>`);
  • Network accessline 141
    const [op,en]=['opening','ending'].map(k=>legacyBrandCtaAssets.find(a=>a.file.includes(`-${k}-`)));  const legacyWrapped=`<section data-wechat-cta="opening" style="background-color:#FFFFFF;"><img data-wechat-cta-image="opening" src="${op.ur
  • Network accessline 142
    const legacyWrapped=`<section data-wechat-cta="opening" style="background-color:#FFFFFF;"><img data-wechat-cta-image="opening" src="${op.url}" alt="x" /></section>`;  const html=shell.replace('<p>',`${legacyWrapped}<img src="${op.url}?v=2">
  • Network accessline 143
    const html=shell.replace('<p>',`${legacyWrapped}<img src="${op.url}?v=2"><img src="https://mmbiz.qpic.cn/x/${en.file}"><img data-wechat-cta-image="ending" src="https://mmbiz.qpic.cn/rehosted.gif"><img src="https://example.com/user.png"><p>`

skills/wechat-styler/tests/content-density-audit.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 57
    ':::',     '',     '![示意图](https://example.com/a.png)',
  • Network accessline 58
    '',     '![示意图](https://example.com/a.png)',     '',
  • Network accessline 59
    '![示意图](https://example.com/a.png)',

skills/wechat-styler/tests/cover-animation.test.mjs

  • Executable scriptline 1
    Executable file

skills/wechat-styler/tests/fixtures/zhijian-visual-baseline.md

  • Network accessline 12
    **关键判断**使用赭石文字色建立阅读锚点,[资料链接](https://example.com)继续使用墨蓝表达理性与可信。

skills/wechat-styler/tests/inject-cli.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 37
    const fakeOpencli = `#!/bin/sh case "$*" in   *"JSON.stringify({url: window.location.href})"*) printf '%s\\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;
  • Network accessline 38
    case "$*" in   *"JSON.stringify({url: window.location.href})"*) printf '%s\\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;   *" state") printf 'URL: https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_ed
  • Network accessline 39
    *"JSON.stringify({url: window.location.href})"*) printf '%s\\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;
  • Network accessline 40
    *" state") printf 'URL: https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit\\n' ;;
  • Network accessline 41
    *"hasTitleEditor"*) printf '%s\\n' '{"readyState":"complete","hasTitleEditor":true,"hasBodyEditor":true,"editorCount":2,"bodyHeight":500}' ;;   *) printf '%s\\n' '{"ok":true,"title":"测试标题","visibleTitle":"测试标题","summary":"","svgCount":0,"an
  • Network accessline 42
    [Credential-related source omitted]
  • Network accessline 77
    const reportPath = path.join(workDir, 'report.json');   fs.mkdirSync(binDir);   fs.writeFileSync(htmlPath, '<html><body><section data-wechat-root="article"><p>正文</p><img src="https://mmbiz.qpic.cn/a.jpg"></section></body></html>');
  • Network accessline 78
    fs.mkdirSync(binDir);   fs.writeFileSync(htmlPath, '<html><body><section data-wechat-root="article"><p>正文</p><img src="https://mmbiz.qpic.cn/a.jpg"></section></body></html>');   fs.writeFileSync(coverPath, Buffer.from([0xff, 0xd8, 0xff, 0xd
  • Network accessline 79
    fs.writeFileSync(htmlPath, '<html><body><section data-wechat-root="article"><p>正文</p><img src="https://mmbiz.qpic.cn/a.jpg"></section></body></html>');
  • Network accessline 81
    const fakeOpencli = `#!/bin/sh case "$*" in   *"JSON.stringify({url: window.location.href})"*) printf '%s\\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;
  • Network accessline 82
    case "$*" in   *"JSON.stringify({url: window.location.href})"*) printf '%s\\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;   *" state") printf 'URL: https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_ed
  • Network accessline 83
    *"JSON.stringify({url: window.location.href})"*) printf '%s\\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;
  • Network accessline 84
    *" state") printf 'URL: https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit\\n' ;;
  • Network accessline 86
    *"bodyEditor.innerHTML"*) printf '%s\\n' '{"ok":true,"svgCount":0,"animateCount":0,"imageCount":1,"textLength":2}' ;;   *"setValue"*) printf '%s\\n' '{"title":"测试标题","visibleTitle":"测试标题","summary":"测试摘要","author":""}' ;;   *"pendingImages"
  • Network accessline 87
    *"setValue"*) printf '%s\\n' '{"title":"测试标题","visibleTitle":"测试标题","summary":"测试摘要","author":""}' ;;   *"pendingImages"*) printf '%s\\n' '{"ok":true,"title":"测试标题","visibleTitle":"测试标题","summary":"测试摘要","svgCount":0,"animateCount":0,"image
  • Network accessline 88
    [Credential-related source omitted]
  • Network accessline 89
    *"cover area not found"*) if [ -f '${coverFlag}' ]; then printf '%s\\n' '{"ok":true,"hasImage":true,"sources":["https://mmbiz.qpic.cn/cover-new.jpg"]}'; else printf '%s\\n' '{"ok":true,"hasImage":true,"sources":["https://mmbiz.qpic.cn/cover
  • Network accessline 92
    *"weui-desktop-img-picker__img-title"*) touch '${coverFlag}'; printf '%s\\n' '{"ok":true,"filename":"cover.jpg"}' ;;   *"save button not found"*) printf '%s\\n' '{"ok":true}' ;;   *"#history_pop tr"*) printf '%s\\n' '{"url":"https://mp.weix
  • Network accessline 93
    [Credential-related source omitted]
  • Network accessline 94
    [Credential-related source omitted]
  • Network accessline 141
    const fakeOpencli = `#!/bin/sh case "$*" in   *"JSON.stringify({url: window.location.href})"*) printf '%s\\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;
  • Network accessline 142
    case "$*" in   *"JSON.stringify({url: window.location.href})"*) printf '%s\\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;   *" state") printf 'URL: https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_ed
  • Network accessline 143
    *"JSON.stringify({url: window.location.href})"*) printf '%s\\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;
  • Network accessline 144
    *" state") printf 'URL: https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit\\n' ;;
  • Network accessline 146
    *"bodyEditor.innerHTML"*) printf '%s\\n' '{"ok":true,"svgCount":0,"animateCount":0,"imageCount":0,"textLength":2}' ;;   *"setValue"*) printf '%s\\n' '{"title":"测试标题","visibleTitle":"测试标题","summary":"","author":""}' ;;   *"pendingImages"*) p
  • Network accessline 147
    *"setValue"*) printf '%s\\n' '{"title":"测试标题","visibleTitle":"测试标题","summary":"","author":""}' ;;   *"pendingImages"*) printf '%s\\n' '{"ok":true,"title":"测试标题","visibleTitle":"测试标题","summary":"","svgCount":0,"animateCount":0,"imageCount":0
  • Network accessline 148
    [Credential-related source omitted]
  • Network accessline 197
    fs.writeFileSync(path.join(bin, 'opencli'), `#!/bin/sh case "$*" in   *"JSON.stringify({url: window.location.href})"*) printf '%s\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;
  • Network accessline 198
    case "$*" in   *"JSON.stringify({url: window.location.href})"*) printf '%s\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;   *"hasTitleEditor"*) printf '%s\n' '{"readyState":"complete","hasTitleEditor":true,
  • Network accessline 199
    *"JSON.stringify({url: window.location.href})"*) printf '%s\n' '{"url":"https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2"}' ;;

skills/wechat-styler/tests/output-contract.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 113
    '### 结构标题',     '',     '正文包含 **普通加粗** 和 [资料链接](https://example.com)。',
  • Network accessline 114
    '',     '正文包含 **普通加粗** 和 [资料链接](https://example.com)。',     '',
  • Network accessline 115
    '正文包含 **普通加粗** 和 [资料链接](https://example.com)。',
  • Network accessline 119
    '> 一段用于交代上下文或证据的普通引用。',     '',     '![图注测试](https://example.com/image.png)',
  • Network accessline 120
    '',     '![图注测试](https://example.com/image.png)',     '',
  • Network accessline 121
    '![图注测试](https://example.com/image.png)',
  • Network accessline 246
    const input = path.join(dir, 'article.md');     const output = path.join(dir, 'article.html');     const source = '![本地图](图片和附件/local.png)\n\n![远程图](https://example.com/a.png)\n';
  • Network accessline 247
    const output = path.join(dir, 'article.html');     const source = '![本地图](图片和附件/local.png)\n\n![远程图](https://example.com/a.png)\n';     fs.writeFileSync(input, source);
  • Network accessline 248
    const source = '![本地图](图片和附件/local.png)\n\n![远程图](https://example.com/a.png)\n';

skills/wechat-styler/tests/qa-browser.test.mjs

  • Executable scriptline 1
    Executable file

skills/wechat-styler/tests/wechat-image-pipeline.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 23
    test('collects only external content images that still need WeChat transfer', () => {   const html = [     '<img src="https://img.test/a.png">',
  • Network accessline 24
    const html = [     '<img src="https://img.test/a.png">',     '<img src="https://mmbiz.qpic.cn/b.png">',
  • Network accessline 25
    '<img src="https://img.test/a.png">',
  • Network accessline 26
    '<img src="https://mmbiz.qpic.cn/b.png">',
  • Network accessline 27
    '<img src="https://mmbiz.qlogo.cn/c.png">',
  • Network accessline 28
    '<img src="https://wx.qlogo.cn/d.png">',
  • Network accessline 32
    assert.deepEqual(findRemoteImageUrls(html), ['https://img.test/a.png']);
  • Network accessline 35
    test('uses an exact WeChat image-host allowlist', () => {   assert.equal(isWeChatHostedImageUrl('https://mmbiz.qlogo.cn/a.png'), true);
  • Network accessline 36
    assert.equal(isWeChatHostedImageUrl('https://mmbiz.qlogo.cn/a.png'), true);
  • Network accessline 37
    assert.equal(isWeChatHostedImageUrl('https://mmbiz.qpic.cn/a.png'), true);
  • Network accessline 38
    assert.equal(isWeChatHostedImageUrl('https://evil-mmbiz.qpic.cn/a.png'), false);
  • Network accessline 42
    test('replaces every occurrence of an optimized image URL', () => {   const html = '<img src="https://img.test/a.png"><a href="https://img.test/a.png">A</a>';
  • Network accessline 43
    const html = '<img src="https://img.test/a.png"><a href="https://img.test/a.png">A</a>';
  • Network accessline 44
    const mapping = new Map([['https://img.test/a.png', 'https://cdn.test/a.jpg']]);
  • Network accessline 46
    assert.equal(replaceImageUrls(html, mapping), '<img src="https://cdn.test/a.jpg"><a href="https://cdn.test/a.jpg">A</a>');
  • Network accessline 49
    test('uses a stable unique upload filename for each source URL', () => {   const first = optimizedFilenameForUrl('https://img.test/a.png');
  • Network accessline 50
    const first = optimizedFilenameForUrl('https://img.test/a.png');
  • Network accessline 51
    const second = optimizedFilenameForUrl('https://img.test/b.png');
  • Network accessline 53
    assert.match(first, /^wechat-[a-f0-9]{16}\.jpg$/);   assert.equal(first, optimizedFilenameForUrl('https://img.test/a.png'));
  • Network accessline 54
    assert.equal(first, optimizedFilenameForUrl('https://img.test/a.png'));
  • Network accessline 58
    test('recognizes GIF URLs and keeps a stable GIF upload filename', () => {   assert.equal(isGifImageUrl('https://img.test/a.GIF?version=2'), true);
  • Network accessline 59
    assert.equal(isGifImageUrl('https://img.test/a.GIF?version=2'), true);
  • Network accessline 60
    assert.equal(isGifImageUrl('https://img.test/a.png'), false);
  • Network accessline 61
    assert.equal(isGifImageUrl('not a URL'), false);   assert.match(optimizedGifFilenameForUrl('https://img.test/a.gif'), /^wechat-[a-f0-9]{16}\.gif$/); });
  • Network accessline 62
    assert.match(optimizedGifFilenameForUrl('https://img.test/a.gif'), /^wechat-[a-f0-9]{16}\.gif$/);
  • Network accessline 66
    assert.throws(     () => assertDistinctUploadedUrls(new Map([       ['https://img.test/a.png', 'https://cdn.test/source-wechat.jpg'],
  • Network accessline 67
    () => assertDistinctUploadedUrls(new Map([       ['https://img.test/a.png', 'https://cdn.test/source-wechat.jpg'],       ['https://img.test/b.png', 'https://cdn.test/source-wechat.jpg'],
  • Network accessline 68
    ['https://img.test/a.png', 'https://cdn.test/source-wechat.jpg'],
  • Network accessline 69
    ['https://img.test/b.png', 'https://cdn.test/source-wechat.jpg'],
  • Network accessline 75
    test('stops optimization before duplicate upload URLs can overwrite article images', async () => {   const content = '<img src="https://img.test/a.png"><img src="https://img.test/b.png">';
  • Network accessline 76
    const content = '<img src="https://img.test/a.png"><img src="https://img.test/b.png">';
  • Network accessline 78
    await assert.rejects(     optimizeContentImages(content, {       forceUrls: ['https://img.test/a.png', 'https://img.test/b.png'],
  • Network accessline 79
    optimizeContentImages(content, {       forceUrls: ['https://img.test/a.png', 'https://img.test/b.png'],       optimizeRemote: async () => 'https://cdn.test/source-wechat.jpg',
  • Network accessline 80
    forceUrls: ['https://img.test/a.png', 'https://img.test/b.png'],
  • Network accessline 81
    optimizeRemote: async () => 'https://cdn.test/source-wechat.jpg',
  • Network accessline 87
    test('routes animated GIF URLs through optimization without changing them to JPEG', async () => {   const content = [     '<img src="https://img.test/a.gif">',
  • Network accessline 88
    const content = [     '<img src="https://img.test/a.gif">',     '<img src="https://img.test/b.GIF">',
  • Network accessline 89
    '<img src="https://img.test/a.gif">',
  • Network accessline 90
    '<img src="https://img.test/b.GIF">',
  • Network accessline 91
    '<img src="https://img.test/large.png">',
  • Network accessline 95
    const result = await optimizeContentImages(content, {     forceUrls: [       'https://img.test/a.gif',
  • Network accessline 96
    forceUrls: [       'https://img.test/a.gif',       'https://img.test/b.GIF',
  • Network accessline 97
    'https://img.test/a.gif',
  • Network accessline 98
    'https://img.test/b.GIF',
  • Network accessline 99
    'https://img.test/large.png',
  • Network accessline 102
    optimizedUrls.push(url);       const extension = isGifImageUrl(url) ? '.gif' : '.jpg';       return `https://cdn.test/${encodeURIComponent(url)}${extension}`;
  • Network accessline 103
    const extension = isGifImageUrl(url) ? '.gif' : '.jpg';       return `https://cdn.test/${encodeURIComponent(url)}${extension}`;     },
  • Network accessline 104
    return `https://cdn.test/${encodeURIComponent(url)}${extension}`;
  • Network accessline 108
    assert.deepEqual(optimizedUrls, [     'https://img.test/a.gif',
  • Network accessline 109
    'https://img.test/a.gif',
  • Network accessline 110
    'https://img.test/b.GIF',
  • Network accessline 111
    'https://img.test/large.png',

skills/wechat-styler/tests/wechat-opencli-compat.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 6
    [Credential-related source omitted]
  • Network accessline 7
    [Credential-related source omitted]
  • Network accessline 31
    test('does not switch away from a bound non-editor, lookalike domain, or permission denial', () => {   for (const response of [     { url: 'https://mp.weixin.qq.com/cgi-bin/home' },
  • Network accessline 32
    for (const response of [     { url: 'https://mp.weixin.qq.com/cgi-bin/home' },     { url: 'https://mp.weixin.qq.com.evil.test/cgi-bin/appmsg?t=media/appmsg_edit' },
  • Network accessline 33
    { url: 'https://mp.weixin.qq.com/cgi-bin/home' },
  • Network accessline 34
    { url: 'https://mp.weixin.qq.com.evil.test/cgi-bin/appmsg?t=media/appmsg_edit' },

skills/wechat-styler/tests/wechat-opencli.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 10
    test('normalizes missing OpenCLI arrays instead of throwing during verification', () => {   const state = normalizeVerificationState({ ok: true, url: 'https://mp.weixin.qq.com/' });
  • Network accessline 11
    const state = normalizeVerificationState({ ok: true, url: 'https://mp.weixin.qq.com/' });
  • Network accessline 18
    test('confirms a draft with appmsgid and saved banner when history is unavailable', () => {   const state = normalizeSaveState({     url: 'https://mp.weixin.qq.com/cgi-bin/appmsg?appmsgid=42',
  • Network accessline 19
    const state = normalizeSaveState({     url: 'https://mp.weixin.qq.com/cgi-bin/appmsg?appmsgid=42',     saved: true,
  • Network accessline 20
    url: 'https://mp.weixin.qq.com/cgi-bin/appmsg?appmsgid=42',
  • Network accessline 34
    test('does not claim save success from an existing appmsgid alone', () => {   const state = normalizeSaveState({     url: 'https://mp.weixin.qq.com/cgi-bin/appmsg?appmsgid=42',
  • Network accessline 35
    const state = normalizeSaveState({     url: 'https://mp.weixin.qq.com/cgi-bin/appmsg?appmsgid=42',   });
  • Network accessline 36
    url: 'https://mp.weixin.qq.com/cgi-bin/appmsg?appmsgid=42',
  • Network accessline 42
    test('requires a new save signal when editing an existing draft', () => {   const before = {     url: 'https://mp.weixin.qq.com/cgi-bin/appmsg?appmsgid=42',
  • Network accessline 43
    const before = {     url: 'https://mp.weixin.qq.com/cgi-bin/appmsg?appmsgid=42',     saved: true,
  • Network accessline 44
    url: 'https://mp.weixin.qq.com/cgi-bin/appmsg?appmsgid=42',

skills/wechat-styler/tests/wechat-publish-core.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 13
    test('extracts the shared article root when generated HTML exposes the contract', () => {   const html = '<html><head><title>示例</title><meta name="description" content="摘要"></head><body><section data-wechat-root="article"><section><img src=
  • Network accessline 14
    const html = '<html><head><title>示例</title><meta name="description" content="摘要"></head><body><section data-wechat-root="article"><section><img src="https://img.test/a.png" alt="A"></section></section><aside>忽略</aside></body></html>';
  • Network accessline 25
    test('identifies local-preview image paths before WeChat injection', () => {   const html = '<section data-wechat-root="article"><img src="图片和附件/封面.png"><img src="https://img.test/body.png"></section>';
  • Network accessline 26
    const html = '<section data-wechat-root="article"><img src="图片和附件/封面.png"><img src="https://img.test/body.png"></section>';

skills/workbuddy-cli-model-bridge/providers/antigravity.json

  • Network accessline 22
    "maxOutputTokens": 65536,           "sources": {             "maxInputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash",
  • Network accessline 23
    "sources": {             "maxInputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash",             "maxOutputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash"
  • Network accessline 24
    "maxInputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash",
  • Network accessline 25
    "maxOutputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash"
  • Network accessline 30
    "maxOutputTokens": 65536,           "sources": {             "maxInputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash",
  • Network accessline 31
    "sources": {             "maxInputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash",             "maxOutputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash"
  • Network accessline 32
    "maxInputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash",
  • Network accessline 33
    "maxOutputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash"
  • Network accessline 38
    "maxOutputTokens": 65536,           "sources": {             "maxInputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.5-flash",
  • Network accessline 39
    "sources": {             "maxInputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.5-flash",             "maxOutputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.5-flash"
  • Network accessline 40
    "maxInputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.5-flash",
  • Network accessline 41
    "maxOutputTokens": "https://ai.google.dev/gemini-api/docs/models/gemini-3.5-flash"

skills/workbuddy-cli-model-bridge/providers/codex.json

  • Network accessline 38
    "maxOutputTokens": 128000,           "sources": {             "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
  • Network accessline 39
    "sources": {             "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",             "maxOutputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol"
  • Network accessline 40
    "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
  • Network accessline 41
    "maxOutputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol"
  • Network accessline 46
    "maxOutputTokens": 128000,           "sources": {             "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
  • Network accessline 47
    "sources": {             "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",             "maxOutputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol"
  • Network accessline 48
    "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
  • Network accessline 49
    "maxOutputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol"
  • Network accessline 74
    "maxOutputTokens": 128000,           "sources": {             "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
  • Network accessline 75
    "sources": {             "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",             "maxOutputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol"
  • Network accessline 76
    "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
  • Network accessline 77
    "maxOutputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol"
  • Network accessline 82
    "maxOutputTokens": 128000,           "sources": {             "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
  • Network accessline 83
    "sources": {             "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",             "maxOutputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol"
  • Network accessline 84
    "maxInputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
  • Network accessline 85
    "maxOutputTokens": "https://developers.openai.com/api/docs/models/gpt-5.6-sol"

skills/workbuddy-cli-model-bridge/providers/glm-coding.json

  • Network accessline 18
    "maxOutputTokens": 128000,           "sources": {             "maxInputTokens": "https://docs.z.ai/guides/overview/migrate-to-glm-new",
  • Network accessline 19
    "sources": {             "maxInputTokens": "https://docs.z.ai/guides/overview/migrate-to-glm-new",             "maxOutputTokens": "https://docs.z.ai/guides/overview/migrate-to-glm-new"
  • Network accessline 20
    "maxInputTokens": "https://docs.z.ai/guides/overview/migrate-to-glm-new",
  • Network accessline 21
    "maxOutputTokens": "https://docs.z.ai/guides/overview/migrate-to-glm-new"

skills/workbuddy-cli-model-bridge/providers/xai-grok.json

  • Network accessline 22
    "maxOutputTokens": 8192,           "sources": {             "maxInputTokens": "https://docs.x.ai/developers/models/grok-4.5",
  • Network accessline 23
    "sources": {             "maxInputTokens": "https://docs.x.ai/developers/models/grok-4.5",             "maxOutputTokens": "https://docs.x.ai/build/settings"
  • Network accessline 24
    "maxInputTokens": "https://docs.x.ai/developers/models/grok-4.5",
  • Network accessline 25
    "maxOutputTokens": "https://docs.x.ai/build/settings"
  • Network accessline 30
    "maxOutputTokens": 8192,           "sources": {             "maxInputTokens": "https://docs.x.ai/developers/models/grok-4.5",
  • Network accessline 31
    "sources": {             "maxInputTokens": "https://docs.x.ai/developers/models/grok-4.5",             "maxOutputTokens": "https://docs.x.ai/build/settings"
  • Network accessline 32
    "maxInputTokens": "https://docs.x.ai/developers/models/grok-4.5",
  • Network accessline 33
    "maxOutputTokens": "https://docs.x.ai/build/settings"
  • Network accessline 38
    "maxOutputTokens": 8192,           "sources": {             "maxInputTokens": "https://docs.x.ai/developers/models/grok-4.5",
  • Network accessline 39
    "sources": {             "maxInputTokens": "https://docs.x.ai/developers/models/grok-4.5",             "maxOutputTokens": "https://docs.x.ai/build/settings"
  • Network accessline 40
    "maxInputTokens": "https://docs.x.ai/developers/models/grok-4.5",
  • Network accessline 41
    "maxOutputTokens": "https://docs.x.ai/build/settings"

skills/workbuddy-cli-model-bridge/references/glm-coding-plan.md

  • Network accessline 11
    | Region | Base URL | Notes | |---|---|---| | China mainland (verified) | `https://open.bigmodel.cn/api/coding/paas/v4` | Set CLIProxyAPI per-key `proxy-url: "direct"` so the request does not enter a TUN Fake-IP path |
  • Network accessline 12
    |---|---|---| | China mainland (verified) | `https://open.bigmodel.cn/api/coding/paas/v4` | Set CLIProxyAPI per-key `proxy-url: "direct"` so the request does not enter a TUN Fake-IP path | | International | `https://api.z.ai/api/coding/paas
  • Network accessline 13
    | China mainland (verified) | `https://open.bigmodel.cn/api/coding/paas/v4` | Set CLIProxyAPI per-key `proxy-url: "direct"` so the request does not enter a TUN Fake-IP path |
  • Network accessline 14
    | International | `https://api.z.ai/api/coding/paas/v4` | Use only when the key was minted on z.ai |
  • Network accessline 25
    openai-compatibility:   - name: "glm-coding"     base-url: "https://open.bigmodel.cn/api/coding/paas/v4"
  • Network accessline 26
    - name: "glm-coding"     base-url: "https://open.bigmodel.cn/api/coding/paas/v4"     api-key-entries:
  • Network accessline 27
    base-url: "https://open.bigmodel.cn/api/coding/paas/v4"

skills/workbuddy-cli-model-bridge/references/provider-schema.md

  • Network accessline 48
    "maxOutputTokens": 32000,           "sources": {             "maxInputTokens": "https://docs.example.com/models/example-3-fast",
  • Network accessline 49
    "sources": {             "maxInputTokens": "https://docs.example.com/models/example-3-fast",             "maxOutputTokens": "https://docs.example.com/models/example-3-fast"
  • Network accessline 50
    "maxInputTokens": "https://docs.example.com/models/example-3-fast",
  • Network accessline 51
    "maxOutputTokens": "https://docs.example.com/models/example-3-fast"

skills/workbuddy-cli-model-bridge/references/troubleshooting.md

  • Network accessline 38
    The key is a coding-subscription credential, not a general BigModel balance pack. Use `https://open.bigmodel.cn/api/coding/paas/v4` on mainland or `https://api.z.ai/api/coding/paas/v4` internationally. The ordinary `/api/paas/v4` URL is the

skills/workbuddy-cli-model-bridge/scripts/bridge.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 39
    DEFAULT_STATE_RELATIVE = Path(".config/workbuddy-cli-model-bridge") DEFAULT_WORKBUDDY_RELATIVE = Path(".workbuddy/models.json") DEFAULT_PROXY_URL = "http://127.0.0.1:8317"
  • Network accessline 41
    DEFAULT_PROXY_URL = "http://127.0.0.1:8317"
  • Access to secretsline 261
    [Credential-related source omitted]
  • Access to secretsline 262
    [Credential-related source omitted]
  • Access to secretsline 267
    [Credential-related source omitted]
  • Access to secretsline 273
    [Credential-related source omitted]
  • Access to secretsline 566
    [Credential-related source omitted]
  • Access to secretsline 572
    [Credential-related source omitted]
  • Network accessline 573
    if data is not None:         headers["Content-Type"] = "application/json"     request = urllib.request.Request(url, data=data, headers=headers, method="POST" if data is not None else "GET")
  • Network accessline 574
    headers["Content-Type"] = "application/json"     request = urllib.request.Request(url, data=data, headers=headers, method="POST" if data is not None else "GET")     try:
  • Network accessline 575
    request = urllib.request.Request(url, data=data, headers=headers, method="POST" if data is not None else "GET")
  • Network accessline 576
    try:         with urllib.request.urlopen(request, timeout=timeout) as response:             raw = response.read()
  • Network accessline 577
    with urllib.request.urlopen(request, timeout=timeout) as response:
  • Access to secretsline 581
    [Credential-related source omitted]
  • Access to secretsline 593
    [Credential-related source omitted]
  • Access to secretsline 594
    [Credential-related source omitted]
  • Network accessline 626
    [Credential-related source omitted]
  • Access to secretsline 626
    [Credential-related source omitted]
  • Network accessline 627
    payload = {"model": model, "messages": [{"role": "user", "content": "Reply with OK."}], "stream": True, "max_tokens": 16}     request = urllib.request.Request(         endpoint,
  • Network accessline 628
    request = urllib.request.Request(
  • Access to secretsline 631
    [Credential-related source omitted]
  • Network accessline 633
    )     try:         with urllib.request.urlopen(request, timeout=45) as response:
  • Network accessline 634
    try:         with urllib.request.urlopen(request, timeout=45) as response:             chunk = response.read(8192)
  • Network accessline 635
    with urllib.request.urlopen(request, timeout=45) as response:
  • Access to secretsline 648
    [Credential-related source omitted]
  • Access to secretsline 650
    [Credential-related source omitted]
  • Access to secretsline 682
    [Credential-related source omitted]
  • Access to secretsline 687
    [Credential-related source omitted]
  • Access to secretsline 694
    [Credential-related source omitted]
  • Access to secretsline 706
    [Credential-related source omitted]
  • Access to secretsline 719
    [Credential-related source omitted]
  • Access to secretsline 741
    [Credential-related source omitted]
  • Access to secretsline 746
    [Credential-related source omitted]
  • Access to secretsline 770
    [Credential-related source omitted]
  • Access to secretsline 782
    [Credential-related source omitted]
  • Access to secretsline 916
    [Credential-related source omitted]
  • Access to secretsline 922
    [Credential-related source omitted]
  • Network accessline 986
    facts = config_facts(config, home)     proxy_url = args.proxy_url or (         f"http://127.0.0.1:{facts.get('port', 8317)}" if facts.get("exists") else DEFAULT_PROXY_URL
  • Network accessline 987
    proxy_url = args.proxy_url or (         f"http://127.0.0.1:{facts.get('port', 8317)}" if facts.get("exists") else DEFAULT_PROXY_URL     )
  • Network accessline 988
    f"http://127.0.0.1:{facts.get('port', 8317)}" if facts.get("exists") else DEFAULT_PROXY_URL
  • Access to secretsline 990
    [Credential-related source omitted]
  • Access to secretsline 1059
    [Credential-related source omitted]
  • Access to secretsline 1069
    [Credential-related source omitted]
  • Access to secretsline 1118
    [Credential-related source omitted]
  • Access to secretsline 1230
    [Credential-related source omitted]
  • Access to secretsline 1232
    [Credential-related source omitted]

skills/workbuddy-cli-model-bridge/tests/test_bridge.py

  • Executable scriptline 1
    Executable file
  • Network accessline 58
    length = int(self.headers.get("Content-Length", "0"))         payload = json.loads(self.rfile.read(length) or b"{}")         self.requests.append(payload)
  • Network accessline 59
    payload = json.loads(self.rfile.read(length) or b"{}")         self.requests.append(payload)         if self.fail_required:
  • Network accessline 60
    self.requests.append(payload)
  • Network accessline 135
    thread.start()         try:             yield f"http://127.0.0.1:{server.server_port}"
  • Network accessline 136
    try:             yield f"http://127.0.0.1:{server.server_port}"         finally:
  • Network accessline 137
    yield f"http://127.0.0.1:{server.server_port}"
  • Network accessline 169
    def test_manifest_rejects_shell_shaped_login_flag(self):         provider = json.loads((Path(__file__).parents[1] / "providers/codex.json").read_text(encoding="utf-8"))         provider["cliproxy"]["login_flag"] = "--codex-login; curl bad.e
  • Network accessline 170
    provider = json.loads((Path(__file__).parents[1] / "providers/codex.json").read_text(encoding="utf-8"))         provider["cliproxy"]["login_flag"] = "--codex-login; curl bad.example"         errors = BRIDGE.validate_provider(provider)
  • Network accessline 171
    provider["cliproxy"]["login_flag"] = "--codex-login; curl bad.example"
  • Possible obfuscationline 221
    raw = base64.b64decode(BRIDGE.PROBE_IMAGE_PNG)
  • Network accessline 288
    self.assertEqual(1050000, settings["maxInputTokens"])         self.assertEqual(             "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
  • Network accessline 289
    self.assertEqual(             "https://developers.openai.com/api/docs/models/gpt-5.6-sol",             sources["maxInputTokens"],
  • Network accessline 290
    "https://developers.openai.com/api/docs/models/gpt-5.6-sol",
  • Access to secretsline 394
    [Credential-related source omitted]
  • Access to secretsline 434
    [Credential-related source omitted]
  • Access to secretsline 455
    [Credential-related source omitted]
  • Access to secretsline 469
    [Credential-related source omitted]
  • Access to secretsline 491
    [Credential-related source omitted]
  • Access to secretsline 545
    [Credential-related source omitted]
  • Network accessline 553
    output = io.StringIO()             with contextlib.redirect_stdout(output):                 BRIDGE.cmd_audit(argparse.Namespace(home=str(home), config=None, proxy_url="http://127.0.0.1:9"))
  • Network accessline 554
    with contextlib.redirect_stdout(output):                 BRIDGE.cmd_audit(argparse.Namespace(home=str(home), config=None, proxy_url="http://127.0.0.1:9"))         rendered = output.getvalue()
  • Network accessline 555
    BRIDGE.cmd_audit(argparse.Namespace(home=str(home), config=None, proxy_url="http://127.0.0.1:9"))

skills/wxmp-article-harvester/SKILL.md

  • Network accessline 35
    | 教程类文章 | 在日期范围命令后加 `--title-regex '(教程|手把手|教你|技巧|实操|实践|工作流)'` | | 年度/深历史 | 首轮加 `--batch`,冷却后只用 `--resume`;状态会恢复账号、范围和全文策略 | | 保存单篇链接 | `python3 scripts/browser_reader.py --url "https://mp.weixin.qq.com/s/..." --output-dir "目录"` |
  • Network accessline 37
    | 保存单篇链接 | `python3 scripts/browser_reader.py --url "https://mp.weixin.qq.com/s/..." --output-dir "目录"` |
  • Network accessline 43
    - 只接受 `https://mp.weixin.qq.com/s...` 公开文章链接;拒绝其他域名、协议和带用户信息的 URL。 - 所有 `wcx search/fetch/list/export/status` 都走 `wcx_run.py`。运行时禁止自动 `pip install` 或强制升级。

skills/wxmp-article-harvester/evals/evals.json

  • Network accessline 22
    {       "id": 4,       "prompt": "把这个微信公众号链接保存成 Markdown:https://mp.weixin.qq.com/s/example",
  • Network accessline 23
    "id": 4,       "prompt": "把这个微信公众号链接保存成 Markdown:https://mp.weixin.qq.com/s/example",       "expected_output": "Treats the request as clip-url, validates the host as https://mp.weixin.qq.com/s..., uses browser_reader.py, and saves one Markd
  • Network accessline 24
    "prompt": "把这个微信公众号链接保存成 Markdown:https://mp.weixin.qq.com/s/example",
  • Network accessline 25
    "expected_output": "Treats the request as clip-url, validates the host as https://mp.weixin.qq.com/s..., uses browser_reader.py, and saves one Markdown clipping without calling Metaso unless explicitly authorized.",

skills/wxmp-article-harvester/references/troubleshooting.md

  • Network accessline 136
    - 某个号抓到一半停止,输出 `freq control` 或 `Rate limited (ret=200013)` - 后续账号全部被拒 - `curl 28 timeout`
  • Network accessline 137
    - 后续账号全部被拒 - `curl 28 timeout` - `OperationalError: database is locked`
  • Network accessline 138
    - `curl 28 timeout`
  • Access to secretsline 193
    [Credential-related source omitted]
  • Access to secretsline 200
    [Credential-related source omitted]
  • Network accessline 206
    3. `python3 scripts/wcx_run.py -- search "<公众号名>"` 4. `python3 scripts/harvest_wxmp.py --account "<公众号名>" --limit 10 --no-fulltext` 5. `python3 scripts/browser_reader.py --url "https://mp.weixin.qq.com/s/..." --output-dir /tmp`
  • Network accessline 207
    4. `python3 scripts/harvest_wxmp.py --account "<公众号名>" --limit 10 --no-fulltext` 5. `python3 scripts/browser_reader.py --url "https://mp.weixin.qq.com/s/..." --output-dir /tmp` 6. `python3 scripts/harvest_wxmp.py --account "<公众号名>" --limit 
  • Network accessline 208
    5. `python3 scripts/browser_reader.py --url "https://mp.weixin.qq.com/s/..." --output-dir /tmp`

skills/wxmp-article-harvester/scripts/browser_reader.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/wxmp-article-harvester/scripts/harvest_wxmp.py

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

skills/wxmp-article-harvester/scripts/metaso_reader.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 21
    METASO_API_URL = "https://metaso.cn/api/v1/reader"
  • Access to secretsline 104
    [Credential-related source omitted]
  • Access to secretsline 106
    [Credential-related source omitted]
  • Network accessline 108
    payload = json.dumps({"url": url}).encode("utf-8")     request = urllib.request.Request(
  • Network accessline 109
    request = urllib.request.Request(
  • Network accessline 117
    method="POST",     )     with urllib.request.urlopen(request, context=ssl.create_default_context(), timeout=timeout) as response:
  • Network accessline 118
    )     with urllib.request.urlopen(request, context=ssl.create_default_context(), timeout=timeout) as response:         markdown = response.read().decode("utf-8", errors="ignore").strip()
  • Network accessline 119
    with urllib.request.urlopen(request, context=ssl.create_default_context(), timeout=timeout) as response:

skills/wxmp-article-harvester/scripts/preflight.py

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

skills/wxmp-article-harvester/scripts/refresh_token_playwright.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 16
    MP_HOME = "https://mp.weixin.qq.com/"

skills/wxmp-article-harvester/scripts/runtime_paths.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 16
    APP_NAME = "wxmp-article-harvester" WCX_COMMIT = "37cf4d5fd6a0677c2137601292f6942ff731d4b9" WCX_INSTALL_SPEC = f"wcx @ git+https://github.com/lovstudio/wcx.git@{WCX_COMMIT}"
  • Network accessline 18
    WCX_INSTALL_SPEC = f"wcx @ git+https://github.com/lovstudio/wcx.git@{WCX_COMMIT}"
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 74
    [Credential-related source omitted]
  • Network accessline 75
    [Credential-related source omitted]
  • Network accessline 76
    raise ValueError("only public https://mp.weixin.qq.com/s... article URLs are allowed")
  • Network accessline 77
    if not re.fullmatch(r"/s(?:/[^/?#]+)?", parsed.path or ""):         raise ValueError("only public https://mp.weixin.qq.com/s... article URLs are allowed")     if parsed.path == "/s":
  • Network accessline 78
    raise ValueError("only public https://mp.weixin.qq.com/s... article URLs are allowed")

skills/wxmp-article-harvester/scripts/wcx_batch_fetch.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/wxmp-article-harvester/scripts/wcx_run.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/wxmp-article-harvester/tests/test_harvester.py

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    def article_url(mid: int) -> str:     return f"https://mp.weixin.qq.com/s?__biz=test&mid={mid}&idx=1&sn=abc"
  • Network accessline 26
    return f"https://mp.weixin.qq.com/s?__biz=test&mid={mid}&idx=1&sn=abc"
  • Network accessline 30
    def test_normalizes_http_and_rejects_non_wechat_hosts(self) -> None:         normalized = runtime_paths.normalize_wechat_url(article_url(1).replace("https://", "http://"))         self.assertTrue(normalized.startswith("https://mp.weixin.qq.
  • Network accessline 31
    normalized = runtime_paths.normalize_wechat_url(article_url(1).replace("https://", "http://"))         self.assertTrue(normalized.startswith("https://mp.weixin.qq.com/s?"))         with self.assertRaises(ValueError):
  • Network accessline 32
    self.assertTrue(normalized.startswith("https://mp.weixin.qq.com/s?"))
  • Network accessline 33
    with self.assertRaises(ValueError):             runtime_paths.normalize_wechat_url("https://mp.weixin.qq.com.evil.example/s?id=1")         with self.assertRaises(ValueError):
  • Network accessline 34
    runtime_paths.normalize_wechat_url("https://mp.weixin.qq.com.evil.example/s?id=1")
  • Network accessline 36
    runtime_paths.normalize_wechat_url("https://mp.weixin.qq.com/cgi-bin/home")
  • Network accessline 40
    self.assertEqual(runtime_paths.normalize_wechat_url(value), article_url(2))         with self.assertRaises(ValueError):             runtime_paths.normalize_wechat_url("https://mp.weixin.qq.com/s?__biz=test&mid=2&idx=1")
  • Network accessline 42
    runtime_paths.normalize_wechat_url("https://mp.weixin.qq.com/s?__biz=test&mid=2&idx=1")
  • Network accessline 96
    [Credential-related source omitted]
  • Network accessline 97
    [Credential-related source omitted]
  • Network accessline 101
    def test_browser_result_keeps_inline_image_order(self) -> None:         text = "这是教程正文。" * 60         markdown = f"第一步 {text}\n\n![](https://mmbiz.qpic.cn/a.png)\n\n第二步 {text}"
  • Network accessline 102
    text = "这是教程正文。" * 60         markdown = f"第一步 {text}\n\n![](https://mmbiz.qpic.cn/a.png)\n\n第二步 {text}"         result = browser_reader.result_from_page_data(
  • Network accessline 103
    markdown = f"第一步 {text}\n\n![](https://mmbiz.qpic.cn/a.png)\n\n第二步 {text}"
  • Network accessline 112
    },         )         image_position = result.markdown.index("![](https://mmbiz.qpic.cn/a.png)")
  • Network accessline 113
    )         image_position = result.markdown.index("![](https://mmbiz.qpic.cn/a.png)")         self.assertLess(result.markdown.index("第一步"), image_position)
  • Network accessline 114
    image_position = result.markdown.index("![](https://mmbiz.qpic.cn/a.png)")
  • Access to secretsline 261
    [Credential-related source omitted]
  • Access to secretsline 321
    [Credential-related source omitted]

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: 7 facts
Signal confidence: 493 facts

and 443 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeFrontmatter field disable-model-invocation in skills/codex-handoff/SKILL.md.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/codex-cli-model-bridge/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/codex-cli-model-bridge/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/codex-cli-model-bridge/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/codex-cli-model-bridge/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.