Klaus assistant config
Given a plain-English description of the assistant a user wants, produce a complete JSON assistant configuration — persona, enabled channels, a tool allowlist with per-tool permission (auto/ask/deny), and safety guardrails — ready to hand to an OpenClaw-style runtime.From its SKILL.md
npx -y skills add riteshkew/yc-skills --skill klaus-assistant-configAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.5 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Workflow
When this skill is invoked, the user provides a plain-English description of the assistant they want to deploy. Your job is to parse that description and emit a complete, valid assistant configuration JSON that an OpenClaw-style runtime can consume directly.
This skill produces the configuration only. Deploying the assistant, provisioning channel credentials, and wiring tool integrations to live services are out of scope — that is the productionization gap the operator bridges after receiving this config.
Step 1 — Extract the assistant intent
Read the user's description carefully and extract every distinct component:
- Persona: What tone, name, and purpose should the assistant have? Extract a concise persona string — the assistant's "character" in one to two sentences.
- Channels: Which messaging surfaces should the assistant be active on? Identify each channel type (e.g., slack, email, sms, whatsapp, discord, web_chat, teams) and any scope constraints per channel (e.g., "read-only in #support", "only DMs from customers").
- Desired capabilities: What should the assistant be able to do? List every distinct action mentioned — read tickets, draft replies, look up orders, update CRM records, send messages, trigger webhooks, etc.
- Explicit restrictions: What should the assistant never do without confirmation, or never do at all? If the user says "must ask before sending", "never delete", "never make payments" — note these as explicit deny or ask constraints.
- Audience: Who interacts with this assistant? (Customers, internal team, developers.) This informs the persona tone and default safety posture.
If a constraint is not mentioned, default to the safe side: outbound messages and any write operations default to "ask", financial or destructive operations default to "deny".
Step 2 — Build the tool allowlist
Map each capability identified in Step 1 to a named tool. Assign a permission level to each tool:
"auto"— the assistant may invoke this tool without asking the user, for clearly safe read operations (e.g.,read_tickets,search_knowledge_base,get_order_status)."ask"— the assistant must present the proposed action to the user for confirmation before executing, for any outbound message, write to an external system, or moderately sensitive read (e.g.,send_email,post_slack_message,update_crm_record,reply_to_ticket)."deny"— the assistant may never invoke this tool, for financial, destructive, or privileged operations (e.g.,make_payment,delete_record,admin_impersonate).
Include a reason string on every tool explaining the permission decision. Always include a make_payment tool set to "deny" and a delete_record tool set to "deny" as baseline safety anchors — even if the user did not mention them — to demonstrate the default-deny posture.
Step 3 — Define guardrails
Produce a guardrails block with these fields:
default_tool_permission— always"deny". Any tool not in the allowlist is denied by default.max_actions_per_run— a reasonable ceiling on consecutive autonomous actions (suggest 25 unless the user implies a higher-volume use case).require_confirmation_for— an array of operation categories that always require user confirmation regardless of individual tool permission. At minimum:["outbound_message", "payment", "data_deletion"].redact_pii_in_logs— alwaystrueunless the user explicitly says logs may contain PII.
Step 4 — Define the escalation policy
Produce an escalation block specifying what happens when the assistant is uncertain or blocked:
to—"human"by default.when— an array of trigger conditions. At minimum:["ambiguous_request", "tool_denied", "low_confidence"]. Add"sensitive_topic"if the audience is customers. Add"escalation_keyword"if the user mentions words like "urgent", "legal", "compliance".
Step 5 — Assemble and self-check the JSON config
Emit a single JSON object with this shape:
{
"assistant": {
"name": "<assistant name>",
"persona": "<one-to-two sentence persona description>",
"description": "<one-sentence functional summary>"
},
"channels": [
{ "type": "<channel_type>", "enabled": true, "scope": "<scope constraint or 'all'>" }
],
"tools": [
{
"name": "<tool_name_in_snake_case>",
"permission": "auto | ask | deny",
"reason": "<plain-English explanation of why this permission level>"
}
],
"guardrails": {
"default_tool_permission": "deny",
"max_actions_per_run": 25,
"require_confirmation_for": ["outbound_message", "payment", "data_deletion"],
"redact_pii_in_logs": true
},
"escalation": {
"to": "human",
"when": ["ambiguous_request", "tool_denied", "low_confidence"]
}
}
Before emitting, verify:
- Every tool in the
toolsarray has a non-emptyname, apermissionvalue from the allowed set (auto,ask,deny), and a non-emptyreason. make_paymentanddelete_recordare present withpermission: "deny".- Every channel in
channelshas atypeand anenabledboolean. guardrails.default_tool_permissionis"deny".require_confirmation_forincludes at minimum"outbound_message","payment", and"data_deletion".- The document is syntactically valid JSON — no trailing commas, no comments, no single-quoted strings.
If any check fails, fix it before emitting.
Safety-first design principle
The configuration follows a default-deny posture: any tool not explicitly listed in tools[] is automatically denied. Outbound actions (messages, emails, posts) and any write to an external system require explicit user confirmation ("ask") unless the user explicitly grants auto-approval. Financial and destructive operations are always "deny". This mirrors the "safe" pillar in Klaus AI's hosted assistant design and the OpenClaw runtime's permission model.
Example
See examples/input.md for a plain-English assistant request (a customer support assistant on Slack and email that reads tickets and drafts replies but must ask before sending anything external).
See examples/output.md for the complete, valid JSON assistant configuration this skill produces from that input.
What ships with it: 4 files
10.3 KB alongside SKILL.md
.claude-plugin/
- plugin.json402 B
- README.md4.6 KB