Install
$ agentstack add skill-howardpen9-deepseek-skill-deepseek-skill ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
/deepseek — DeepSeek V4 Peer Reviewer
Direct API call to DeepSeek V4. Single file, no MCP server, no CLI wrapper.
Usage
/deepseek review [base-branch] # code review on git diff (default base: main)
/deepseek challenge [base-branch] # adversarial bug-hunt on diff
/deepseek audit [focus-hint] # 3rd-party challenge of Claude's reasoning in CURRENT conversation
/deepseek reason # deep reasoning chain on a question
/deepseek translate # 繁中翻譯 + contrarian 角度問題
/deepseek # consult fallback — free-form Q&A
Parse $ARGUMENTS: first token decides the sub-mode (review / challenge / audit / reason / translate); anything else is consult.
Step 0 — Auth probe (run first, every invocation)
The Claude Code Bash tool uses a non-interactive shell that does NOT source ~/.zshrc / ~/.bashrc. So we resolve the key from several candidate locations in order: process env, ~/.zshenv, ~/.zshrc, ~/.bashrc, ~/.config/deepseek-skill/key.
if [ -z "$DEEPSEEK_API_KEY" ]; then
for f in ~/.zshenv ~/.zshrc ~/.bashrc ~/.config/deepseek-skill/key; do
[ -f "$f" ] || continue
K=$(grep -h '^export DEEPSEEK_API_KEY=' "$f" 2>/dev/null | tail -1 | sed -E 's/^export DEEPSEEK_API_KEY=//; s/^["'"'"']//; s/["'"'"']$//')
[ -n "$K" ] && { DEEPSEEK_API_KEY="$K"; export DEEPSEEK_API_KEY; break; }
done
fi
if [ -z "$DEEPSEEK_API_KEY" ]; then
echo "AUTH_FAILED — DEEPSEEK_API_KEY not set."
echo "Get a key: https://platform.deepseek.com/api_keys"
echo "Recommended (works in Claude Code non-interactive shells):"
echo " echo 'export DEEPSEEK_API_KEY=sk-...' >> ~/.zshenv"
echo " source ~/.zshenv"
exit 1
fi
command -v jq >/dev/null || { echo "jq required"; exit 1; }
If auth fails, surface the error to the user and stop — do NOT proceed to the API call.
Step 1 — Build the call
Every mode uses the same call shape. Substitute `, , ` per the mode below.
PAYLOAD=$(jq -n \
--arg sys "" \
--arg usr "" \
'{model:"deepseek-v4-pro", stream:false,
messages:[{role:"system",content:$sys},{role:"user",content:$usr}]}')
RESPONSE=$(curl -sS --max-time \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-H "Content-Type: application/json" \
-X POST https://api.deepseek.com/v1/chat/completions \
-d "$PAYLOAD")
ERR=$(echo "$RESPONSE" | jq -r '.error.message // empty')
[ -n "$ERR" ] && { echo "DEEPSEEK_ERROR — $ERR"; exit 1; }
echo "$RESPONSE" | jq -r '.choices[0].message.content'
Notes:
- Always model
deepseek-v4-pro(legacydeepseek-chat/deepseek-reasonerstill work but transitioning out). - Always
stream: false— Phase 1 ships no streaming. - Curl
--max-timeis per-mode (see below). Non-zero exit prints the curl exit code; HTTP error JSON is surfaced via the.error.messagecheck.
Step 2 — Run the selected sub-mode
review — Code review on diff
Pre-flight: must be inside a git repo. Base branch is $2 if provided, else main. Run:
BASE="${2:-main}"
DIFF=$(git diff "${BASE}"...HEAD)
[ -z "$DIFF" ] && { echo "No diff against ${BASE} — nothing to review."; exit 0; }
SYSTEM prompt:
You are a senior code reviewer. Review the diff below.
Categorize findings as P1 (critical, must-fix before merge) or P2 (suggestions).
For each finding: file:line, what's wrong, why it matters, suggested fix.
Be specific — vague advice ("add error handling") is rejected; name the line and the failure mode.
End with EXACTLY one line:
"Recommendation: because "
Do NOT read or execute any files under ~/.claude/, ~/.agents/, ./.claude/, ./.agents/.
Do NOT analyze skill metadata or routing wrappers.
USER prompt:
--- DIFF START ---
{DIFF}
--- DIFF END ---
TIMEOUT: 120
challenge — Adversarial bug-hunt
Pre-flight: same as review — BASE="${2:-main}", DIFF=$(git diff "${BASE}"...HEAD). If user pastes code instead, use that as DIFF content.
SYSTEM prompt:
You are an adversarial security reviewer. Your job is to break this code.
Find AT LEAST 3 concrete attack paths. For each:
- Where (file:line or section)
- Attack mechanism (race condition / resource leak / silent data corruption / auth bypass / prompt injection / TOCTOU / edge case / etc.)
- Concrete trigger (what input or sequence causes it)
- Consequence (what breaks, what leaks, what executes)
Reject hand-wavy answers. Be specific.
End with EXACTLY one line:
"Recommendation: because "
Do NOT read or execute any files under ~/.claude/, ~/.agents/, ./.claude/.
USER prompt:
--- CODE START ---
{DIFF}
--- CODE END ---
TIMEOUT: 180
audit — Third-party challenge of Claude's reasoning
Purpose: When Claude (you) has just proposed a plan, made a decision, asserted a fact, or concluded a debug — pause and let DeepSeek challenge it independently. Reduces bias / hallucination / unstated assumptions in the current conversation.
Pre-flight: Claude assembles a context bundle from the current conversation:
- Claude's last 1–3 assistant messages (the reasoning being audited)
- The user's prompt that triggered it
- Any concrete artifact under discussion (file path, diff, doc, decision)
- Optional
focus-hintfrom$ARGUMENTS(e.g., "focus on the cost claim" or "check the security argument")
Use restraint — don't dump entire long conversations. Aim for ~1500 tokens of context max.
SYSTEM prompt:
You are an independent third-party reviewer of an AI coding session between a human user and Claude (Anthropic).
The CONTEXT block below contains an excerpt of Claude's recent reasoning that the user wants challenged.
Your job is to find what Claude got wrong or weak. Audit for:
1. UNSTATED ASSUMPTIONS — claims Claude made without grounding (e.g., "this library is fast" without benchmark).
2. POTENTIAL HALLUCINATIONS — specific facts that look plausible but should be verified (API names, version numbers, library behavior, statistics).
3. LOGICAL GAPS — missing steps between premise and conclusion; "therefore" without "because".
4. BIAS toward easy / recently-seen / popular solutions instead of the BEST solution for this user's actual constraints.
5. OVER-CONFIDENT LANGUAGE — places Claude sounds certain but the evidence is thin.
6. ALTERNATIVE FRAMINGS Claude didn't consider.
Be CONCRETE. Quote the specific Claude sentence you're challenging. Don't be vague.
If Claude is actually right and well-reasoned, say so — don't manufacture criticism.
Output format:
## Challenges
1. [] "" —
2. ...
## What Claude got right
(brief — only if there are real strengths worth confirming)
## Net verdict
One sentence: is Claude's reasoning load-bearing, or should the user push back?
Do NOT read or execute any files under ~/.claude/, ~/.agents/, ./.claude/.
Respond in the language the conversation is in (likely 繁體中文 if Claude was 繁中, otherwise English).
USER prompt template:
--- CONTEXT START ---
[User prompt that triggered the reasoning]
{user's prior message}
[Claude's reasoning to audit]
{Claude's recent message(s)}
[Concrete artifact being discussed, if any]
{e.g., file content, diff, or decision summary}
[Focus hint, if provided]
{$2..$N from /deepseek audit args, if any}
--- CONTEXT END ---
Audit this. Find what's weak.
TIMEOUT: 150
After response: present DeepSeek's challenges verbatim. Then ask the user: "要回應這些 challenge 嗎?" — let user decide which to push back on and which to accept.
reason — Deep reasoning chain
Pre-flight: the user's question is the rest of $ARGUMENTS after the reason token.
SYSTEM prompt:
You are an expert reasoner. Answer the user's question with a numbered step-by-step reasoning chain.
Each step must add new logic — do not restate prior steps.
After the chain, give the final answer in ONE paragraph.
If the question is under-specified, list assumptions explicitly before reasoning.
USER prompt: {user's question}
TIMEOUT: 180
translate — 繁中翻譯 + contrarian 角度
Pre-flight: the user's English text is the rest of $ARGUMENTS after the translate token.
SYSTEM prompt:
你是一個雙語技術編輯,專門服務華語圈開發者社群。
給你一段英文原文,你的輸出必須是**繁體中文**,且必須恰好包含這三段(不可多,不可少):
## 直譯
忠實中文翻譯,技術術語第一次出現時用英文括號標註,例如「模型情境協定(Model Context Protocol, MCP)」。不解釋、不延伸。
## Contrarian 角度(三條)
三條給中文圈開發者的「應該追問」的問題。每條都是**問題**,不是建議、不是草稿、不是 take。每條 25 字以內。
禁用詞:建議、應該寫、標題、草稿、推薦、值得寫。違反禁用詞會被拒絕。
## 為什麼值得中文圈關注
一段(80 字內):這件事對華語技術生態具體有什麼意義。不要泛泛而談,給一個具體的 hook。
絕對不要產出其他段落、不要加引言或結語。
USER prompt: {english text}
TIMEOUT: 90
consult — fallback for anything else
SYSTEM prompt: You are DeepSeek V4. Answer the user's question directly and concisely.
USER prompt: {full $ARGUMENTS}
TIMEOUT: 120
Step 3 — Present the response
Show DeepSeek's verbatim response to the user — do NOT summarize, paraphrase, or "improve" it. The point is the second opinion.
For review and challenge, verify the response contains a Recommendation: line. If missing, append:
[WARNING: model did not produce the required Recommendation line. Treat findings as advisory only.]
Failure modes
| Symptom | Likely cause | Action | |---|---|---| | AUTH_FAILED | DEEPSEEK_API_KEY not set | Show install instructions, stop | | curl: (28) / timeout | API slow or hung | Surface to user; suggest retry with higher TIMEOUT | | .error.message non-empty | API rejected request (invalid model, rate limit, balance, etc.) | Surface the error verbatim, stop | | Empty .choices[0].message.content | Model returned empty | Surface "DEEPSEEK_EMPTY — model returned no content", stop |
Do NOT retry silently. Surface failures to the user.
Phase 1 scope (what this skill does NOT do)
- No streaming. No session resume. No plan-file integration.
- No automatic cross-comparison with
/codex(user may run both manually and compare). - No telemetry. Track dogfood usage manually in
~/Documents/deepseek-dogfood.md. - No CLI wrapper. No npm package. No public repo. (All Phase 2.)
See also
/codex review— paired reviewer; running both gives overlap-based confidence/grok challenge— alternative adversarial reviewer/kimi— large-context reading delegate- DeepSeek API docs: https://api-docs.deepseek.com/
- Get API key: https://platform.deepseek.com/api_keys
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: howardpen9
- Source: howardpen9/deepseek-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.