/install btw-command
\r \r
btw Command\r
\r Local skill by Claw0x — runs entirely in your OpenClaw agent.\r \r
Runs locally. No external API calls, no API key required. Complete privacy.\r \r
What It Does\r
\r The btw Command skill allows AI agents to ask clarifying questions without halting their main workflow. Questions are queued, users are notified via multiple channels, and if no answer is received within the timeout period, a default answer is used automatically.\r \r Think of it as "by the way, I need to know..." — the agent continues working while waiting for your input.\r \r
Quick Reference\r
\r | When This Happens | Do This | What You Get |\r |-------------------|---------|--------------|\r | Need deployment confirmation | Ask "Deploy to staging or production?" | Non-blocking answer with default |\r | Code review decision | Ask "Refactor this complex function?" | User choice without workflow halt |\r | Data validation | Ask "Found duplicates, merge or keep?" | Timeout-safe decision |\r | Security check | Ask "API key expiring, rotate now?" | Priority-based notification |\r \r
5-Minute Quickstart\r
\r
Step 1: Install (30 seconds)\r
openclaw skill add btw\r
```\r
\r
### Step 2: Ask Your First Question (1 minute)\r
```typescript\r
const result = await agent.run('btw', {\r
question: 'Deploy to staging or production?',\r
options: ['staging', 'production'],\r
default: 'staging',\r
timeout: 300,\r
priority: 'urgent'\r
});\r
\r
console.log(result.answer); // 'production' or 'staging' (default)\r
```\r
\r
### Step 3: Handle the Answer (instant)\r
```typescript\r
if (result.timed_out) {\r
console.log(`Used default: ${result.answer}`);\r
} else {\r
console.log(`User chose: ${result.answer} in ${result.response_time_ms}ms`);\r
}\r
```\r
\r
## Real-World Use Cases\r
\r
### Scenario 1: Deployment Automation\r
**Problem**: Agent needs to deploy but unsure which environment\r
**Solution**: Ask non-blocking question with timeout\r
**Example**:\r
```typescript\r
const { answer } = await btw({\r
question: 'Tests passed! Deploy to which environment?',\r
options: ['staging', 'production', 'skip'],\r
default: 'staging',\r
timeout: 600, // 10 minutes\r
priority: 'urgent'\r
});\r
\r
if (answer === 'production') {\r
await deployToProduction();\r
} else if (answer === 'staging') {\r
await deployToStaging();\r
}\r
```\r
\r
### Scenario 2: Code Review Decisions\r
**Problem**: Agent finds complex code, unsure if refactoring is needed\r
**Solution**: Ask for human judgment without blocking\r
**Example**:\r
```typescript\r
const { answer } = await btw({\r
question: 'Function `processData` has 150 lines. Refactor?',\r
options: ['yes', 'no', 'later'],\r
default: 'later',\r
timeout: 300,\r
priority: 'normal',\r
context: {\r
file: 'src/utils/data.ts',\r
lines: 150,\r
complexity: 'high'\r
}\r
});\r
```\r
\r
### Scenario 3: Data Validation\r
**Problem**: Agent finds duplicate records, needs merge strategy\r
**Solution**: Ask with context and smart default\r
**Example**:\r
```typescript\r
const { answer } = await btw({\r
question: 'Found 5 duplicate users. How to handle?',\r
options: ['merge', 'keep-all', 'keep-newest'],\r
default: 'keep-newest',\r
timeout: 180,\r
priority: 'normal',\r
context: {\r
duplicates: 5,\r
table: 'users',\r
criteria: 'email'\r
}\r
});\r
```\r
\r
### Scenario 4: Security Checks\r
**Problem**: API key expiring soon, needs rotation decision\r
**Solution**: High-priority question with short timeout\r
**Example**:\r
```typescript\r
const { answer } = await btw({\r
question: 'API key expires in 2 days. Rotate now?',\r
options: ['yes', 'no', 'remind-tomorrow'],\r
default: 'remind-tomorrow',\r
timeout: 60,\r
priority: 'urgent',\r
context: {\r
key_name: 'STRIPE_API_KEY',\r
expires_at: '2026-03-29'\r
}\r
});\r
```\r
\r
## Integration Recipes\r
\r
### OpenClaw Agent\r
```typescript\r
agent.onTask(async (task) => {\r
// Ask question without blocking\r
const { answer } = await agent.run('btw', {\r
question: 'Approve this change?',\r
options: ['yes', 'no'],\r
default: 'no',\r
timeout: 300\r
});\r
\r
if (answer === 'yes') {\r
await task.execute();\r
}\r
});\r
```\r
\r
### LangChain Agent\r
```python\r
def ask_user(question, options, default, timeout=300):\r
# Use btw skill locally\r
result = agent.run('btw', {\r
'question': question,\r
'options': options,\r
'default': default,\r
'timeout': timeout\r
})\r
return result['answer']\r
\r
# Use in agent\r
answer = ask_user(\r
'Deploy to production?',\r
['yes', 'no'],\r
'no',\r
timeout=600\r
)\r
```\r
\r
### Custom Agent\r
```javascript\r
// Local btw implementation\r
async function askBtw(question, options, defaultAnswer) {\r
const result = await agent.run('btw', {\r
question,\r
options,\r
default: defaultAnswer,\r
timeout: 300\r
});\r
\r
return result.answer;\r
}\r
```\r
\r
## Workflow Diagram\r
\r
```\r
Agent Workflow\r
│\r
├─ Main Task (continues)\r
│\r
└─ btw Question\r
├─ Queue Question\r
├─ Notify User (Web/Mobile/Slack)\r
│\r
├─ User Answers → Return Answer\r
│\r
└─ Timeout → Return Default\r
```\r
\r
## Why Use Via Claw0x?\r
\r
- **Zero configuration**: No API keys, no setup\r
- **Complete privacy**: Runs entirely locally\r
- **Offline capable**: Works without internet\r
- **Unlimited usage**: No rate limits or quotas\r
- **Open source**: Transparent implementation\r
- **Agent-native**: Built for autonomous workflows\r
\r
## Prerequisites\r
\r
**None.** Just install and use.\r
\r
## Input Parameters\r
\r
| Parameter | Type | Required | Default | Description |\r
|-----------|------|----------|---------|-------------|\r
| `question` | string | Yes | - | The question to ask |\r
| `options` | string[] | No | - | Available answer options |\r
| `default` | string | No | First option | Default if timeout |\r
| `timeout` | number | No | 300 | Timeout in seconds |\r
| `priority` | string | No | "normal" | Priority: urgent/normal/low |\r
| `context` | object | No | {} | Additional context |\r
\r
## Output Schema\r
\r
| Field | Type | Description |\r
|-------|------|-------------|\r
| `answer` | string | User's answer or default |\r
| `answered_at` | string | ISO timestamp |\r
| `timed_out` | boolean | Whether timeout occurred |\r
| `response_time_ms` | number | Time to answer |\r
\r
## Error Codes\r
\r
| Code | Meaning | Solution |\r
|------|---------|----------|\r
| 400 | Invalid input | Check question is non-empty |\r
| 500 | Internal error | Retry or check logs |\r
\r
## Pricing\r
\r
**Free.** No API key required, no usage limits.\r
\r
- Runs entirely locally in your agent\r
- No external API calls\r
- Complete privacy\r
- Unlimited questions\r
\r
## Rate Limits\r
\r
**None.** Unlimited questions.\r
\r
## About Claw0x\r
\r
[Claw0x](https://claw0x.com) is the native skills layer for AI agents — providing unified API access, atomic billing, and quality control.\r
\r
**Explore more skills**: [claw0x.com/skills](https://claw0x.com/skills)\r
\r
**GitHub**: [github.com/kennyzir/btw](https://github.com/kennyzir/btw)\r
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install btw-command - After installation, invoke the skill by name or use
/btw-command - Provide required inputs per the skill's parameter spec and get structured output
What is btw command?
Ask non-blocking clarifying questions during agent workflows. Use when agents need user input without halting execution. Handles deployment decisions, code r... It is an AI Agent Skill for Claude Code / OpenClaw, with 97 downloads so far.
How do I install btw command?
Run "/install btw-command" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is btw command free?
Yes, btw command is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does btw command support?
btw command is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created btw command?
It is built and maintained by claw0x (@kennyzir); the current version is v1.0.0.