Not in the top 1,000 by GitHub stars

MJorgin/dsh-media-skills

Free image reading & generation for DeepSeek Harness (rc.7 / rc.8 / v0.1.1-rc.1 / rc.2 / v0.1.2-alpha.3) — paste-image reading with auto vision transcription, DeepSeek-V4-Flash-Vision-Exp / GLM-4V-Flash / SenseNova / Gemini failover, Kolors + U1 Fast generation. No keys in repo.

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/media-tools/SKILL.md

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

Before Not checked yet → After Network or broad shell

9c6d5d95d415 → bd655645ee44

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 9c6d5d95d415

No earlier version was observed for comparison.

Compare on GitHub

skills/vision-review/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

9c6d5d95d415 → bd655645ee44

A local comparison is unavailable. You can inspect the recorded versions on GitHub.

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 9c6d5d95d415

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit bd655645ee4460a67e36cf819ca7d61d744b7730

25GitHub stars
0stars in 7 days
2skills in this repository
22commits in 30 days

Heat

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

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

Stars over time

Oct 25, 2026Oct 31, 202625

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

Individual skills in this repository

How it works

media-tools

When your agent uses it

图片生成。用户要求生成图片、插画、头像、封面、背景、banner、海报或其他视觉素材时使用。优先 SenseNova U1 Fast,其次 SiliconFlow Kolors;密钥只从环境变量或 ~/.dsh/secrets/media-tools.env、~/.codex/secrets/media-tools.env 读取,不内置、不写入任何密钥。

What it loads into context

Frontmatter

88 tokens

Always available to the agent

SKILL.md

642 tokens

When the skill is activated

Reference documents

0 tokens

Loaded on request

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

The playbook

  1. 用法
  2. 尺寸
  3. 密钥来源
  4. 输出和隐私
  5. 故障排查

Scripts executed separately

  • scripts/generate.py

Files

  • SKILL.mdcore2,298 bytes
  • SKILL.mdcore2,298 bytes
  • SKILL.mdcore2,298 bytes
  • scripts/generate.pyruns3,995 bytes
Read SKILL.md

# Media Tools(图片生成)

通过用户自行配置的服务商生成图片素材。优先使用 SenseNova U1 Fast;未配置 SenseNova key 时,使用 SiliconFlow Kolors。

## 用法

```bash
python3 scripts/generate.py "<提示词>" <输出路径.png> [尺寸]
```

示例:

```bash
python3 scripts/generate.py "云海中的中国宫殿,写实电影感,气势恢宏" palace.jpg 16:9
View the complete source on GitHub

Skills included

  • media-tools
  • vision-review

Repository facts

License
MIT
Created
Aug 14, 2026
Last pushed
Nov 6, 2026
Forks
2
Open issues
1
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

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

Show 5 notes
  • skills/media-tools/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/media-tools/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/vision-review/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/vision-review/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/vision-review/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 88 signals by file

skills/media-tools/SKILL.md

  • Access to secretsline 40
    [Credential-related source omitted]
  • Access to secretsline 41
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]

skills/media-tools/scripts/generate.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 4
    Provider selection: 1. If SENSENOVA_API_KEY is set, use SenseNova U1 Fast (https://token.sensenova.ai).
  • Network accessline 5
    [Credential-related source omitted]
  • Access to secretsline 5
    [Credential-related source omitted]
  • Access to secretsline 6
    [Credential-related source omitted]
  • Network accessline 11
    SILICONFLOW_URL = "https://api.siliconflow.cn/v1/images/generations"
  • Network accessline 12
    SILICONFLOW_MODEL = "Kwai-Kolors/Kolors" SENSENOVA_URL = "https://token.sensenova.ai/v1/images/generations" SENSENOVA_MODEL = "sensenova-u1-fast"
  • Network accessline 13
    SENSENOVA_URL = "https://token.sensenova.ai/v1/images/generations"
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 72
    def generate_sensenova(prompt, out, size):     body = {"model": SENSENOVA_MODEL, "prompt": prompt, "size": sensenova_size(size), "n": 1}     req = urllib.request.Request(SENSENOVA_URL,
  • Network accessline 73
    body = {"model": SENSENOVA_MODEL, "prompt": prompt, "size": sensenova_size(size), "n": 1}     req = urllib.request.Request(SENSENOVA_URL,         data=json.dumps(body).encode(),
  • Network accessline 74
    req = urllib.request.Request(SENSENOVA_URL,
  • Network accessline 75
    [Credential-related source omitted]
  • Network accessline 76
    [Credential-related source omitted]
  • Access to secretsline 76
    [Credential-related source omitted]
  • Network accessline 77
    with urllib.request.urlopen(req, timeout=300) as r:
  • Network accessline 78
    data = json.load(r)     url = data["data"][0]["url"]     urllib.request.urlretrieve(url, out)
  • Network accessline 79
    url = data["data"][0]["url"]     urllib.request.urlretrieve(url, out)     print("done:", out)
  • Network accessline 80
    urllib.request.urlretrieve(url, out)
  • Network accessline 83
    def generate_siliconflow(prompt, out, size):     body = {"model": SILICONFLOW_MODEL, "prompt": prompt, "image_size": size, "batch_size": 1}     req = urllib.request.Request(SILICONFLOW_URL,
  • Network accessline 84
    body = {"model": SILICONFLOW_MODEL, "prompt": prompt, "image_size": size, "batch_size": 1}     req = urllib.request.Request(SILICONFLOW_URL,         data=json.dumps(body).encode(),
  • Network accessline 85
    req = urllib.request.Request(SILICONFLOW_URL,
  • Network accessline 86
    [Credential-related source omitted]
  • Network accessline 87
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Network accessline 88
    with urllib.request.urlopen(req, timeout=300) as r:
  • Network accessline 89
    data = json.load(r)     url = data["images"][0]["url"]     urllib.request.urlretrieve(url, out)
  • Network accessline 90
    url = data["images"][0]["url"]     urllib.request.urlretrieve(url, out)     print("done:", out)
  • Network accessline 91
    urllib.request.urlretrieve(url, out)
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 104
    [Credential-related source omitted]

skills/vision-review/SKILL.md

  • Access to secretsline 43
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 45
    [Credential-related source omitted]
  • Access to secretsline 46
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]

skills/vision-review/scripts/vision.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 6
    [Credential-related source omitted]
  • Access to secretsline 7
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Access to secretsline 9
    [Credential-related source omitted]
  • Network accessline 40
    PRIMARY = {     "name": "zhipu-glm",     "baseUrl": "https://open.bigmodel.cn/api/paas/v4",
  • Network accessline 41
    "name": "zhipu-glm",     "baseUrl": "https://open.bigmodel.cn/api/paas/v4",     "apiKeyEnv": "GLM_API_KEY",
  • Network accessline 42
    "baseUrl": "https://open.bigmodel.cn/api/paas/v4",
  • Access to secretsline 43
    [Credential-related source omitted]
  • Network accessline 51
    return {         "name": "siliconflow-qwen",         "baseUrl": "https://api.siliconflow.cn/v1",
  • Network accessline 52
    "name": "siliconflow-qwen",         "baseUrl": "https://api.siliconflow.cn/v1",         "apiKeyEnv": "SILICONFLOW_API_KEY",
  • Network accessline 53
    "baseUrl": "https://api.siliconflow.cn/v1",
  • Access to secretsline 54
    [Credential-related source omitted]
  • Access to secretsline 55
    [Credential-related source omitted]
  • Access to secretsline 63
    [Credential-related source omitted]
  • Network accessline 68
    return {         "name": "deepseek",         "baseUrl": os.environ.get("DEEPSEEK_BASE_URL", "https://api.deepseek.com"),
  • Network accessline 69
    "name": "deepseek",         "baseUrl": os.environ.get("DEEPSEEK_BASE_URL", "https://api.deepseek.com"),         "apiKeyEnv": "DEEPSEEK_API_KEY",
  • Network accessline 70
    [Credential-related source omitted]
  • Access to secretsline 70
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 72
    [Credential-related source omitted]
  • Network accessline 78
    # 备用引擎:Google Gemini(免费 key,AI Studio 领取),走 OpenAI 兼容端点。 # Google 域名可能需要代理:在 secrets 文件里写 GEMINI_PROXY=http://127.0.0.1:7897 即可,
  • Network accessline 79
    # Google 域名可能需要代理:在 secrets 文件里写 GEMINI_PROXY=http://127.0.0.1:7897 即可,
  • Access to secretsline 82
    [Credential-related source omitted]
  • Network accessline 83
    return {         "name": "gemini",         "baseUrl": "https://generativelanguage.googleapis.com/v1beta/openai",
  • Network accessline 84
    "name": "gemini",         "baseUrl": "https://generativelanguage.googleapis.com/v1beta/openai",         "apiKeyEnv": "GEMINI_API_KEY",
  • Network accessline 85
    "baseUrl": "https://generativelanguage.googleapis.com/v1beta/openai",
  • Access to secretsline 86
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Network accessline 97
    return {         "name": "sensenova",         "baseUrl": "https://token.sensenova.ai/v1",
  • Network accessline 98
    "name": "sensenova",         "baseUrl": "https://token.sensenova.ai/v1",         "apiKeyEnv": "SENSENOVA_API_KEY",
  • Network accessline 99
    "baseUrl": "https://token.sensenova.ai/v1",
  • Access to secretsline 100
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 107
    [Credential-related source omitted]
  • Access to secretsline 133
    [Credential-related source omitted]
  • Access to secretsline 147
    [Credential-related source omitted]
  • Access to secretsline 157
    [Credential-related source omitted]
  • Access to secretsline 159
    [Credential-related source omitted]
  • Access to secretsline 161
    [Credential-related source omitted]
  • Access to secretsline 163
    [Credential-related source omitted]
  • Network accessline 205
    if opener:         return opener.open(req, timeout=timeout)     return urllib.request.urlopen(req, timeout=timeout)
  • Network accessline 207
    return urllib.request.urlopen(req, timeout=timeout)
  • Network accessline 228
    def send(payload):         req = urllib.request.Request(eng["baseUrl"] + "/chat/completions",
  • Network accessline 229
    req = urllib.request.Request(eng["baseUrl"] + "/chat/completions",
  • Network accessline 286
    body = {"model": eng["model"], "messages": [{"role": "user", "content": "ping"}],             "max_tokens": 8}     req = urllib.request.Request(eng["baseUrl"] + "/chat/completions",
  • Network accessline 287
    "max_tokens": 8}     req = urllib.request.Request(eng["baseUrl"] + "/chat/completions",         data=json.dumps(body).encode(),
  • Network accessline 288
    req = urllib.request.Request(eng["baseUrl"] + "/chat/completions",

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.

Declared and executed: 4 facts
Signal confidence: 88 facts

and 38 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md skills/media-tools/SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/media-tools/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/media-tools/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/media-tools/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/media-tools/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/media-tools/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.