Report a Bug
This is the support entry for
, not the third editing workflow. By default, only public Issue drafts are generated; external submissions must go through desensitization preview and user confirmation.
text
Issue Description
|
v
Minimum Read-only Diagnosis -> Desensitization -> Display Repository / Title / Body
|
Explicit User Confirmation
|
v
Authentication + Tag Check + Duplication Check
|
v
Create GitHub Issue
1. Confirm it's a Reproducible Bug
First distinguish:
- Bug: Actual behavior deviates from existing contracts, interfaces, version capabilities, or deterministic results.
- Feature suggestion: The product has never promised this capability; do not disguise it as a Bug.
- Usage question: Answer or diagnose first, do not report automatically.
Only collect minimal facts required for reproduction. Do not install Runtime, start Studio, modify projects, re-edit clips, or upload media to "supplement evidence". When Runtime exists, you can execute
node scripts/ensure-runtime.cjs --json
from the plugin root directory for read-only detection, and only retain
state / kind / version / healthy / error.code
; do not attach complete doctor output.
only indicates the installation source is the desktop App, and does not authorize this Skill to start the App, services, or reinstall. Write "Not detected" if it doesn't exist.
2. Select a Fixed Repository
The workspace root directory is not necessarily a Git repository; guessing the remote from the current directory is prohibited:
| Problem Component | target | GitHub Repository |
|---|
| Runtime, Studio, UI, CLI, API, Timeline, Rendering | | Agentchengfeng/chengfeng-videocut
|
| Skill, Marketplace, Installation Orchestration, MCP App, Workflow Instructions | | Agentchengfeng/chengfeng-videocut-skills
|
For cross-component issues, prioritize reporting to the repository where the contract was first violated, and mention the other component in the body; ask the user first if you can't judge.
3. Generate Structured Input
Use
to write the candidate to a JSON file in the current task's temporary directory, do not write to product specification files; delete the temporary JSON and Markdown after submission:
json
{
"schemaVersion": 1,
"target": "product",
"component": "Studio",
"title": "Runtime 0.1.1 cannot open HyperFrames top-level clip voiceover view",
"summary": "One-sentence description of the impact",
"steps": ["Step 1", "Step 2"],
"expected": "Expected behavior",
"actual": "Actual behavior",
"environment": {
"Runtime": "0.1.1",
"OS": "macOS"
},
"evidence": ["Only include minimal, publicly available diagnostics"],
"acceptance": ["Verifiable repair conditions"]
}
Prohibited content:
- API Key, Token, Cookie, ;
- Videos, audio, screenshots, complete logs or transcribed text;
- Customer names, original video names, real , user absolute paths;
- Private repository content without user permission.
4. Generate and Display the Desensitized Draft First
Locate the script from the current
:
First locate the
plugin root according to the first step of "Readiness Check" in
Check for Updates
(go up two levels from the actual source file path of this Skill; do not run
or search other
caches; substitute the literal path for
below). This Skill only uses it to locate the script,
and does not install Runtime or start services:
bash
node "<plugin root>/skills/chengfeng-report-bug/scripts/report-bug.cjs" draft --input "<report JSON file>" --output "<draft output file>" --json
must be explicitly
or
; stop if it is missing or misspelled, and do not silently report to another repository. The script will clean up common keys, local usernames, volume names, path segments, and localhost query parameters; automatic desensitization cannot recognize arbitrary customer names, so manual review is still required. Show the user:
text
repo
label=bug
title
Full desensitized body
Save the returned
at the same time, and show the user the
and expiration time. Stop if the user does not explicitly confirm this public content; merely detecting an error does not equal consent to report. The token only binds to the draft content and does not prove user consent on its own; the Agent must still wait for an explicit response. Confirmation is only valid for one submission immediately following in the current task, expires in 30 minutes, and cannot be used across tasks or repeatedly.
5. Submit After Confirmation
Only submit the draft that was just displayed and whose content has not changed:
bash
node "<plugin root>/skills/chengfeng-report-bug/scripts/report-bug.cjs" submit --input "<report JSON file>" --target "<target repository>" --confirmed --confirm-token "<confirmation token>" --receipt "<confirmation receipt file>" --json
Fixed rules:
- Before submission, the script checks , target repository Issues, and the label; retain the draft if it fails.
- When a fingerprint of the same component, reproduction steps, and actual result already exists, return the original Issue URL; do not use a broad title to pretend it's a duplicate.
- Return if the body changes after confirmation; re-preview is required.
- Return
confirmation_expired / confirmation_replayed
if the confirmation credentials are expired or already used; re-preview is required.
- Do not automatically retry if no clear Issue URL is returned in the creation result; it may have already been created.
- Only when you get the GitHub Issue URL can you say "the bug has been reported".
Failure Handling
- : Indicates the draft is completed but not submitted; do not claim success.
github_issue_create_failed
: Retain the draft and manual entry; do not retry in a loop.
- / : Re-display the exact public content.
- No permission or invisible target repository: Do not report to any other repository; let the user decide whether to report to the public Skills repository.