CtrlK
BlogDocsLog inGet started
Tessl Logo

qqbot-contact-send

Resolve a QQBot recipient from the local known-targets registry, distinguish between similarly named contacts, and send text or files to the intended QQ user with the correct target. Use whenever the user says things like “发给这个 QQ 联系人”, “把这个文件发给某个 QQ 用户”, “看看 known-targets.json 里是谁”, “确认发送对象”, or when you need to map a human-readable QQ contact name to a concrete `user:<openid>` target before sending. Prefer this skill over guessing from the current chat when multiple QQ users exist.

75

Quality

92%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

85%Weight 40%Scale 1-3

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is well-structured and highly actionable, with executable commands, a sequenced workflow including ambiguity and error checkpoints, and correctly referenced one-level-deep bundle scripts. Its main weakness is redundancy: the matching rules and script invocations are repeated across multiple sections.

Suggestions

Consolidate the matching logic into a single section; the workflow, "Matching rules", and "The scripts use:" list all restate the exact-displayName/exact-target/substring/recency ordering.

Avoid duplicating the resolve_known_target.py and prepare_send.py command invocations verbatim between the "Default workflow" and the "Helper scripts" section; reference the script once and show the example once.

Make the pre-send validation explicit in the workflow (e.g. a step instructing Claude to check the prepare_send.py status field is "ok" rather than "ambiguous" before invoking the message tool) to strengthen the existing checkpoint.

DimensionReasoningScore

Conciseness

The body is lean and avoids explaining concepts Claude already knows, but the matching logic is restated three times (workflow steps 4-6, the "Matching rules" section, and "The scripts use:" list) and the resolve/prepare_send.py invocations are duplicated verbatim between the workflow and the "Helper scripts" section, so it could be tightened. It sits at level 2 rather than 3 because of this redundancy, and below 1 because there is no concept fluff.

2 / 3

Actionability

It gives fully executable, copy-paste-ready commands with complete argument syntax (e.g. "python3 {baseDir}/scripts/resolve_known_target.py \"<name-or-target>\" --account-id \"<current-accountId>\"") plus concrete message-tool fields (channel: qqbot, target, accountId) and a concrete follow-up reply example, matching the level-3 anchor.

3 / 3

Workflow Clarity

The 10-step "Default workflow" is a clear sequence with an ambiguity checkpoint (step 5: show candidates and ask) and an explicit error-recovery feedback loop (step 10: "If upload fails, report the real error plainly. Offer retry or text fallback"), and prepare_send.py emits an ok/ambiguous status payload acting as a pre-send validation signal. This matches the level-3 anchor with explicit checkpoints; it is not capped at 2 because sending a single message is neither destructive nor a batch operation.

3 / 3

Progressive Disclosure

The SKILL.md body is a concise overview organized into clearly signaled sections, and its only references are one level deep to real bundled files (scripts/resolve_known_target.py and scripts/prepare_send.py, both verified to exist) using the {baseDir} placeholder, matching the level-3 anchor of a clear overview with well-signaled one-level references.

3 / 3

Total

11

/

12

Passed

Description

100%Weight 40%Scale 1-3

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is specific, third-person, and includes explicit natural-language triggers alongside a clear statement of capability and a disambiguation directive. It fully addresses both what the skill does and when to use it without padding.

DimensionReasoningScore

Specificity

"Resolve a QQBot recipient... distinguish between similarly named contacts, and send text or files to the intended QQ user with the correct target" lists multiple concrete actions (resolve, disambiguate, send text/files), matching the level-3 anchor and exceeding the single-action level-2 example.

3 / 3

Completeness

It states what the skill does (resolve/disambiguate/send) and provides an explicit "Use whenever the user says things like..." clause with concrete triggers, satisfying both the 'what' and 'when' requirements of the level-3 anchor.

3 / 3

Trigger Term Quality

Natural in-language phrases a user would actually say are quoted directly — "发给这个 QQ 联系人", "把这个文件发给某个 QQ 用户", "看看 known-targets.json 里是谁", "确认发送对象" — giving good coverage of natural trigger terms rather than technical jargon.

3 / 3

Distinctiveness Conflict Risk

The niche is narrow (QQBot known-targets registry resolution) and the guidance to "Prefer this skill over guessing from the current chat when multiple QQ users exist" gives distinct triggers unlikely to fire for unrelated skills.

3 / 3

Total

12

/

12

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
BytePioneer-AI/openclaw-china
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.