CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

add-dial-tool

Give chosen NanoClaw agents a real phone number as a container tool — the `dial` CLI baked into the agent image plus OneCLI credential injection for api.getdial.ai, attached only to the agents you pick, so they can send SMS, place AI voice calls, and receive verification codes from inside the sandbox. Independent of the Dial channel; idempotent; re-run to change which agents may use it. Use when the user wants agents to text, call, or run `dial …` from a chat, without wiring Dial as a messaging channel.

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Medium

Suggest reviewing before use

SKILL.md
Quality
Evals
Security

Quality

Content

81%Weight 40%Scale 1-5

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

An exceptionally actionable, well-sequenced operational skill: every step is executable with explicit validation checkpoints, conditionals, and error-recovery guidance, and the heavy credential logic is properly moved into a bundled script. Its weaknesses are repetition (the account-switch warning and error-code triage each appear twice) and inline version pins, which cost token efficiency, plus a dangling REMOVE.md link in the bundle.

Suggestions

State the account-switch warning ("the Dial key is updated in place, so a different account switches every agent holding the key") once and reference it from the second operator block instead of repeating it nearly verbatim.

Explain the access_restricted / credential_not_found / app_not_connected error-code triage in one place — Troubleshooting — and have the Done section point there, rather than duplicating the full explanation.

Extract the large attach/detach shell script into scripts/ (as was done with dial-secret.ts) and link it, which would also resolve the dangling REMOVE.md reference by shipping it alongside the bundle.

DimensionReasoningScore

Conciseness

The body is dense and operational rather than padded, but it includes noticeable repetition and time-sensitive detail that could be tightened: the "updated in place, switches every agent that holds the Dial key" warning appears nearly verbatim in two operator blocks, the access_restricted/credential_not_found error-code triage is explained twice ("Done" and "Troubleshooting"), and pinned versions (0.37.0, gateway 1.44/1.45) are woven into the prose rather than isolated. This fits 'mostly efficient but includes some unnecessary explanation or could be tightened' better than the 4 anchor's 'minor instances'.

3 / 5

Actionability

Every step is copy-paste-ready executable: concrete commands in directive fences (`ncl groups list --json`, `npm install -g @getdial/cli@0.37.0`, `dial auth login {{owner_email}} --force`, the json-merge directive, `./container/build.sh`) plus a real extracted script (scripts/dial-secret.ts), and the common cases (signed in vs not, all/none/agent-id answers) are all covered. It matches 'fully executable; copy-paste ready code or commands; specific examples cover the common cases'.

5 / 5

Workflow Clarity

The sequence (Pre-flight → Choose agents → Install CLI → Sign in → Image → Register credential → Attach → Restart) is explicit with validation at every risky point ("This must succeed before anything else runs … Stop here", the grants gateway check, "a bad answer stops them all, nothing is written"), conditional branches (when:signed_in), and error-recovery feedback loops in Troubleshooting (check the error code, re-run the skill). This is the anchor with explicit validation steps and feedback loops, not merely 'most checkpoints present'.

5 / 5

Progressive Disclosure

Good structure overall: clear sections, a well-signaled one-level-deep reference to a real bundle file ([scripts/dial-secret.ts](scripts/dial-secret.ts)), and credential logic appropriately extracted to a script with a test. Minor gaps keep it from a 5: the linked [REMOVE.md](REMOVE.md) is absent from the bundle, the ~1000-character attach shell script is inlined in the body rather than extracted like dial-secret.ts, and scripts/dial-secret.test.ts is present but never referenced.

4 / 5

Total

17

/

20

Passed

Description

92%Weight 40%Scale 1-5

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

A strong description: concrete and comprehensive about capabilities, explicit about when to use it with natural trigger phrasing, and deliberately disambiguated from the related Dial channel skill. The only improvement space is broader synonym coverage in the trigger clause (e.g. 2FA/OTP-style phrasing).

DimensionReasoningScore

Specificity

The description enumerates multiple concrete capabilities ("send SMS, place AI voice calls, and receive verification codes from inside the sandbox") and names the concrete mechanism ("the `dial` CLI baked into the agent image plus OneCLI credential injection for api.getdial.ai, attached only to the agents you pick"). Coverage is comprehensive for a phone-number tool; a 4 would require minor gaps in the action list, which are not present.

5 / 5

Completeness

It explicitly answers both questions: what ("Give chosen NanoClaw agents a real phone number as a container tool … so they can send SMS, place AI voice calls, and receive verification codes") and when ("Use when the user wants agents to text, call, or run `dial …` from a chat, without wiring Dial as a messaging channel"), with concrete trigger phrases — a clear match to the top anchor rather than the 4 anchor's 'when could be more specific'.

5 / 5

Trigger Term Quality

Natural user phrasing is present — "text", "call", "send SMS", "voice calls", "verification codes", "run `dial …` from a chat" — giving good keyword coverage. A few natural synonyms are missing (e.g. "2FA/MFA/OTP codes", "give an agent a phone number"), so it falls between the good-coverage anchor and the comprehensive-synonyms anchor, closer to 4.

4 / 5

Distinctiveness Conflict Risk

It carves out a clear niche (container tool for chosen NanoClaw agents) and explicitly distinguishes the sibling skill twice ("Independent of the Dial channel", "without wiring Dial as a messaging channel"), so the risk of triggering for the wrong Dial-related skill is minimal — matching the distinct-triggers anchor, not the 4 anchor's 'minor overlap risk with closely related skills'.

5 / 5

Total

19

/

20

Passed

Validation

93%

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

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 1 missing

Warning

Total

15

/

16

Passed

Repository

nanocoai/nanoclaw

Path

.claude/skills/add-dial-tool/SKILL.md

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.