Compare commits
5 Commits
main
...
codex/open
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c34a9fea78 | ||
|
|
408f3ffbeb | ||
|
|
997b440e32 | ||
|
|
6b3a1ea8e4 | ||
|
|
19e4b50974 |
155
skills/openclaw-feedback/SKILL.md
Normal file
155
skills/openclaw-feedback/SKILL.md
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
---
|
||||||
|
name: openclaw-feedback
|
||||||
|
description: Use when the user wants to report a problem, give feedback, or file an issue for `openclaw/openclaw`. The skill should run a very short, pointed interview first, collect any missing grounded details, then create the OpenClaw GitHub issue for the user as soon as it has enough safe information.
|
||||||
|
user-invocable: true
|
||||||
|
metadata:
|
||||||
|
{
|
||||||
|
"openclaw":
|
||||||
|
{
|
||||||
|
"emoji": "🐙",
|
||||||
|
"requires": { "bins": ["gh"] },
|
||||||
|
"install":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "brew",
|
||||||
|
"kind": "brew",
|
||||||
|
"formula": "gh",
|
||||||
|
"bins": ["gh"],
|
||||||
|
"label": "Install GitHub CLI (brew)",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
---
|
||||||
|
|
||||||
|
# OpenClaw Feedback
|
||||||
|
|
||||||
|
Use this skill only for `openclaw/openclaw`.
|
||||||
|
|
||||||
|
Primary goal
|
||||||
|
|
||||||
|
- Help the user create an issue for `openclaw/openclaw` with as little user effort as possible while keeping the filing accurate and safe.
|
||||||
|
|
||||||
|
Core policy
|
||||||
|
|
||||||
|
- Default to a very short, pointed interview before filing.
|
||||||
|
- Keep the interview small: usually 1-3 targeted questions.
|
||||||
|
- Ask only for the information that materially improves the filing.
|
||||||
|
- If the request is actually a vulnerability report, leaked credential report, or other security disclosure, do not create a public GitHub issue. Route it to the private reporting path in `SECURITY.md` instead.
|
||||||
|
- Prefer doing the drafting, cleanup, and template-mapping work yourself instead of forcing the user through each field verbatim.
|
||||||
|
- Automatically redact obvious secrets and unnecessary PII when that can be done safely without losing the meaning needed for the filing.
|
||||||
|
- Try recovery in this order: infer the likely filing type, sanitize obvious risky content, ask a very short grouped follow-up, then draft the strongest accurate issue you can.
|
||||||
|
- Once the issue is sufficiently grounded and safe, create it for the user instead of stopping at a draft or asking the user to submit it manually.
|
||||||
|
- Return exact `NOT_ENOUGH_INFO` only after the brief recovery attempt still leaves the filing too weak, ambiguous, or misleading.
|
||||||
|
- Return `BLOCKED_UNSAFE_CONTENT` only when automatic masking would materially damage correctness or the remaining content is still unsafe.
|
||||||
|
|
||||||
|
Never do these
|
||||||
|
|
||||||
|
- Do not file against any repo other than `openclaw/openclaw`.
|
||||||
|
- Do not push branches.
|
||||||
|
- Do not invent repro steps, versions, evidence, or verification details.
|
||||||
|
- Do not leave obvious secrets or unnecessary PII unredacted if you can safely mask them yourself.
|
||||||
|
|
||||||
|
Bundled copies
|
||||||
|
|
||||||
|
- Bug issue: [`bug_report.yml`](./bug_report.yml)
|
||||||
|
- Feature issue: [`feature_request.yml`](./feature_request.yml)
|
||||||
|
|
||||||
|
Submission states
|
||||||
|
|
||||||
|
- `NOT_ENOUGH_INFO`
|
||||||
|
- `BLOCKED_UNSAFE_CONTENT`
|
||||||
|
- `READY_TO_CREATE`
|
||||||
|
- `CREATED`
|
||||||
|
|
||||||
|
Default workflow
|
||||||
|
|
||||||
|
1. Decide whether the request is a bug issue, feature issue, or a private security disclosure. If it is an issue, also set `$LABEL` to `bug` or `enhancement` to match the bundled template.
|
||||||
|
2. Load the copied template file for the chosen issue type.
|
||||||
|
3. Run a short targeted interview even if the initial request is terse but plausible.
|
||||||
|
4. Prefer grouped interview questions over replaying the whole template.
|
||||||
|
5. Stop interviewing as soon as the payload is strong enough.
|
||||||
|
6. Draft the issue body yourself using the bundled template structure instead of forcing the user to fill every field manually.
|
||||||
|
7. If the request is a private security disclosure, follow `SECURITY.md`: prepare the private report using the required fields there, direct the user to report privately to `security@openclaw.ai` when needed, and do not publish the details in a public issue.
|
||||||
|
8. If critical facts are still missing after the brief recovery attempt, return `NOT_ENOUGH_INFO`.
|
||||||
|
9. If the payload is complete and safe, create the issue with `gh` for the user; do not stop at `READY_TO_CREATE` unless actual creation is blocked.
|
||||||
|
|
||||||
|
Interview policy
|
||||||
|
|
||||||
|
- Prefer 1-3 grouped questions.
|
||||||
|
- Ask the smallest number of questions that materially improves the filing.
|
||||||
|
- Recover thin requests instead of rejecting them early when the user intent is clear.
|
||||||
|
- For bug issues, prioritize:
|
||||||
|
- What breaks and how to reproduce it
|
||||||
|
- Expected vs actual behavior and exact environment
|
||||||
|
- Impact and evidence
|
||||||
|
- For feature issues, prioritize:
|
||||||
|
- Problem to solve
|
||||||
|
- Proposed solution and alternatives
|
||||||
|
- Impact and evidence
|
||||||
|
|
||||||
|
Issue requirements
|
||||||
|
|
||||||
|
- Infer bug vs feature when the user intent is clear, otherwise ask the smallest targeted follow-up possible.
|
||||||
|
- Use the exact title prefix from the chosen issue template.
|
||||||
|
- Keep the filed issue grounded in observed evidence.
|
||||||
|
- Include only helpful optional context; avoid filler.
|
||||||
|
- If the user gives terse but usable facts, draft the issue body for them instead of replaying every template label.
|
||||||
|
- Preserve the canonical issue label:
|
||||||
|
- bug issue -> `bug`
|
||||||
|
- feature issue -> `enhancement`
|
||||||
|
|
||||||
|
Unsafe content rules
|
||||||
|
|
||||||
|
Automatically mask obvious risky strings when the filing can remain accurate, including:
|
||||||
|
|
||||||
|
- API keys, tokens, bearer headers, cookies, passwords, or secrets
|
||||||
|
- email addresses
|
||||||
|
- phone numbers
|
||||||
|
- other unnecessary identifying personal details
|
||||||
|
|
||||||
|
Use compact placeholders that preserve meaning, such as:
|
||||||
|
|
||||||
|
- `[token-redacted]`
|
||||||
|
- `[cookie-redacted]`
|
||||||
|
- `[email-redacted]`
|
||||||
|
- `[phone-redacted]`
|
||||||
|
|
||||||
|
Return `BLOCKED_UNSAFE_CONTENT` only if:
|
||||||
|
|
||||||
|
- the unsafe content cannot be removed without breaking the technical meaning
|
||||||
|
- the remaining payload would still expose sensitive information
|
||||||
|
- the user is trying to file content that should not be published even in redacted form
|
||||||
|
|
||||||
|
Creation command
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gh issue create --repo openclaw/openclaw --title "$TITLE" --label "$LABEL" --body-file "$BODY_FILE"
|
||||||
|
```
|
||||||
|
|
||||||
|
Output format
|
||||||
|
|
||||||
|
Use `READY_TO_CREATE` only as a transient internal state before immediate creation, or when creation is blocked by a concrete external precondition such as missing auth. Do not leave the user with a draft when creation can proceed.
|
||||||
|
|
||||||
|
```text
|
||||||
|
NOT_ENOUGH_INFO
|
||||||
|
- Missing: <field label>
|
||||||
|
- Question: <targeted question>
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
BLOCKED_UNSAFE_CONTENT
|
||||||
|
- Field: <field label>
|
||||||
|
- Reason: <brief reason>
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
READY_TO_CREATE
|
||||||
|
- Type: bug issue | feature issue
|
||||||
|
- Title: <sanitized title>
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
CREATED
|
||||||
|
- URL: https://github.com/openclaw/openclaw/...
|
||||||
|
```
|
||||||
137
skills/openclaw-feedback/bug_report.yml
Normal file
137
skills/openclaw-feedback/bug_report.yml
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
name: Bug report
|
||||||
|
description: Report defects, including regressions, crashes, and behavior bugs.
|
||||||
|
title: "[Bug]: "
|
||||||
|
labels:
|
||||||
|
- bug
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Prepared via the `openclaw-feedback` skill template copy.
|
||||||
|
Draft the report for the user instead of replaying the form field-by-field when the intent is already clear.
|
||||||
|
Keep every answer concise, reproducible, and grounded in observed evidence.
|
||||||
|
Automatically mask obvious secrets, tokens, cookies, passwords, emails, phone numbers, and similar sensitive strings when they are not needed verbatim.
|
||||||
|
Ask only a very short grouped follow-up when a few missing facts would materially improve the report.
|
||||||
|
If a required narrative section still cannot be grounded after that brief recovery attempt, respond with exactly `NOT_ENOUGH_INFO`.
|
||||||
|
- type: dropdown
|
||||||
|
id: bug_type
|
||||||
|
attributes:
|
||||||
|
label: Bug type
|
||||||
|
description: Choose the category that best matches this report.
|
||||||
|
options:
|
||||||
|
- Regression (worked before, now fails)
|
||||||
|
- Crash (process/app exits or hangs)
|
||||||
|
- Behavior bug (incorrect output/state without crash)
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: summary
|
||||||
|
attributes:
|
||||||
|
label: Summary
|
||||||
|
description: One-sentence statement of what is broken, based only on observed evidence. If the evidence is insufficient, respond with exactly `NOT_ENOUGH_INFO`.
|
||||||
|
placeholder: After upgrading from 2026.2.10 to 2026.2.17, Telegram thread replies stopped posting; reproduced twice and confirmed by gateway logs.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: repro
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
description: Provide the shortest deterministic repro path supported by direct observation. If the repro path cannot be grounded from the evidence, respond with exactly `NOT_ENOUGH_INFO`.
|
||||||
|
placeholder: |
|
||||||
|
1. Start OpenClaw 2026.2.17 with the attached config.
|
||||||
|
2. Send a Telegram thread reply in the affected chat.
|
||||||
|
3. Observe no reply and confirm the attached `reply target not found` log line.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: expected
|
||||||
|
attributes:
|
||||||
|
label: Expected behavior
|
||||||
|
description: State the expected result using a concrete reference such as prior observed behavior, attached docs, or a known-good version. If no grounded reference exists, respond with exactly `NOT_ENOUGH_INFO`.
|
||||||
|
placeholder: In 2026.2.10, the agent posted replies in the same Telegram thread under the same workflow.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: actual
|
||||||
|
attributes:
|
||||||
|
label: Actual behavior
|
||||||
|
description: Describe only the observed result, including user-visible errors and cited evidence. If the observed result cannot be grounded from the evidence, respond with exactly `NOT_ENOUGH_INFO`.
|
||||||
|
placeholder: No reply is posted in the thread; the attached gateway log shows `reply target not found` at 14:23:08 UTC.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: OpenClaw version
|
||||||
|
description: Exact version/build tested.
|
||||||
|
placeholder: <version such as 2026.2.17>
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: os
|
||||||
|
attributes:
|
||||||
|
label: Operating system
|
||||||
|
description: OS and version where this occurs.
|
||||||
|
placeholder: macOS 15.4 / Ubuntu 24.04 / Windows 11
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: install_method
|
||||||
|
attributes:
|
||||||
|
label: Install method
|
||||||
|
description: How OpenClaw was installed or launched.
|
||||||
|
placeholder: npm global / pnpm dev / docker / mac app
|
||||||
|
- type: input
|
||||||
|
id: model
|
||||||
|
attributes:
|
||||||
|
label: Model
|
||||||
|
description: Effective model under test.
|
||||||
|
placeholder: minimax/text-01 / openrouter/anthropic/claude-opus-4.1 / anthropic/claude-sonnet-4.5
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: provider_chain
|
||||||
|
attributes:
|
||||||
|
label: Provider / routing chain
|
||||||
|
description: Effective request path through gateways, proxies, providers, or model routers.
|
||||||
|
placeholder: openclaw -> cloudflare-ai-gateway -> minimax
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: provider_setup_details
|
||||||
|
attributes:
|
||||||
|
label: Additional provider/model setup details
|
||||||
|
description: Optional. Include redacted routing details, per-agent overrides, auth-profile interactions, env/config context, or anything else needed to explain the effective provider/model setup. Do not include API keys, tokens, or passwords.
|
||||||
|
placeholder: |
|
||||||
|
Default route is openclaw -> cloudflare-ai-gateway -> minimax.
|
||||||
|
Previous setup was openclaw -> cloudflare-ai-gateway -> openrouter -> minimax.
|
||||||
|
Relevant config lives in ~/.openclaw/openclaw.json under models.providers.minimax and models.providers.cloudflare-ai-gateway.
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Logs, screenshots, and evidence
|
||||||
|
description: Include the logs, screenshots, recordings, docs, or version comparisons that support the grounded answers above. Automatically redact obvious secrets and unnecessary PII before filing.
|
||||||
|
render: shell
|
||||||
|
- type: textarea
|
||||||
|
id: impact
|
||||||
|
attributes:
|
||||||
|
label: Impact and severity
|
||||||
|
description: |
|
||||||
|
Explain who is affected, how severe it is, how often it happens, and the practical consequence using only observed evidence.
|
||||||
|
If any part cannot be grounded from the evidence, respond with exactly `NOT_ENOUGH_INFO`.
|
||||||
|
Include:
|
||||||
|
- Affected users/systems/channels
|
||||||
|
- Severity (annoying, blocks workflow, data risk, etc.)
|
||||||
|
- Frequency (always/intermittent/edge case)
|
||||||
|
- Consequence (missed messages, failed onboarding, extra cost, etc.)
|
||||||
|
placeholder: |
|
||||||
|
Affected: Telegram group users on 2026.2.17
|
||||||
|
Severity: High (blocks thread replies)
|
||||||
|
Frequency: 4/4 observed attempts
|
||||||
|
Consequence: Agents do not respond in the affected threads
|
||||||
|
- type: textarea
|
||||||
|
id: additional_information
|
||||||
|
attributes:
|
||||||
|
label: Additional information
|
||||||
|
description: Add any remaining grounded context that helps triage but does not fit above. If this is a regression, include the last known good and first known bad versions when observed. If there is still not enough evidence after a brief targeted follow-up, respond with exactly `NOT_ENOUGH_INFO`.
|
||||||
|
placeholder: Last known good version 2026.2.10, first known bad version 2026.2.17, temporary workaround is sending a top-level message instead of a thread reply.
|
||||||
74
skills/openclaw-feedback/feature_request.yml
Normal file
74
skills/openclaw-feedback/feature_request.yml
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
name: Feature request
|
||||||
|
description: Propose a new capability or product improvement.
|
||||||
|
title: "[Feature]: "
|
||||||
|
labels:
|
||||||
|
- enhancement
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Prepared via the `openclaw-feedback` skill template copy.
|
||||||
|
Draft the request for the user instead of replaying the form field-by-field when the intent is already clear.
|
||||||
|
Help evaluate the request with concrete use cases and tradeoffs.
|
||||||
|
Automatically mask obvious secrets and unnecessary PII before filing.
|
||||||
|
Ask only a very short grouped follow-up when a few missing facts would materially improve the request.
|
||||||
|
- type: textarea
|
||||||
|
id: summary
|
||||||
|
attributes:
|
||||||
|
label: Summary
|
||||||
|
description: One-line statement of the requested capability.
|
||||||
|
placeholder: Add per-channel default response prefix.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: problem
|
||||||
|
attributes:
|
||||||
|
label: Problem to solve
|
||||||
|
description: What user pain this solves and why current behavior is insufficient. Recover terse requests into a concrete problem statement when the user intent is clear.
|
||||||
|
placeholder: Agents cannot distinguish persona context in mixed channels, causing misrouted follow-ups.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: proposed_solution
|
||||||
|
attributes:
|
||||||
|
label: Proposed solution
|
||||||
|
description: Desired behavior/API/UX with as much specificity as possible. Draft the strongest accurate proposal you can from the user’s intent and a brief follow-up if needed.
|
||||||
|
placeholder: Support channels.<channel>.responsePrefix with default fallback and account-level override.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: alternatives
|
||||||
|
attributes:
|
||||||
|
label: Alternatives considered
|
||||||
|
description: Other approaches considered and why they are weaker.
|
||||||
|
placeholder: Manual prefixing in prompts is inconsistent and hard to enforce.
|
||||||
|
- type: textarea
|
||||||
|
id: impact
|
||||||
|
attributes:
|
||||||
|
label: Impact
|
||||||
|
description: |
|
||||||
|
Explain who is affected, severity/urgency, how often this pain occurs, and practical consequences.
|
||||||
|
Include:
|
||||||
|
- Affected users/systems/channels
|
||||||
|
- Severity (annoying, blocks workflow, etc.)
|
||||||
|
- Frequency (always/intermittent/edge case)
|
||||||
|
- Consequence (delays, errors, extra manual work, etc.)
|
||||||
|
placeholder: |
|
||||||
|
Affected: Multi-team shared channels
|
||||||
|
Severity: Medium
|
||||||
|
Frequency: Daily
|
||||||
|
Consequence: +20 minutes/day/operator and delayed alerts
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: evidence
|
||||||
|
attributes:
|
||||||
|
label: Evidence/examples
|
||||||
|
description: Prior art, links, screenshots, logs, or metrics. Automatically redact obvious secrets and unnecessary PII before filing.
|
||||||
|
placeholder: Comparable behavior in X, sample config, and screenshot of current limitation.
|
||||||
|
- type: textarea
|
||||||
|
id: additional_information
|
||||||
|
attributes:
|
||||||
|
label: Additional information
|
||||||
|
description: Extra context, constraints, or references not covered above. If a small targeted follow-up still does not produce enough grounded substance for the request, respond with exactly `NOT_ENOUGH_INFO`.
|
||||||
|
placeholder: Must remain backward-compatible with existing config keys.
|
||||||
Loading…
x
Reference in New Issue
Block a user