chengfeng-report-bug
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese上报 Bug
Report a Bug
这是 的支持入口,不是第三条剪辑流程。默认只生成公开 Issue 草稿;外部写入必须经过脱敏预览与用户确认。
chengfeng-videocuttext
问题描述
|
v
最小只读诊断 -> 脱敏 -> 展示仓库 / 标题 / 正文
|
用户明确确认
|
v
认证 + 标签检查 + 查重
|
v
创建 GitHub IssueThis 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.
chengfeng-videocuttext
Issue Description
|
v
Minimum Read-only Diagnosis -> Desensitization -> Display Repository / Title / Body
|
Explicit User Confirmation
|
v
Authentication + Tag Check + Duplication Check
|
v
Create GitHub Issue1. 确认这是可复现 Bug
1. Confirm it's a Reproducible Bug
先区分:
- Bug:实际行为偏离已有契约、界面、版本能力或确定性结果。
- 功能建议:产品从未承诺该能力;不要伪装成 Bug。
- 使用疑问:先回答或诊断,不自动上报。
只收集复现所需的最小事实。不得安装 Runtime、启动 Studio、改项目、重新剪片或上传媒体来“补证据”。Runtime 存在时,可从插件根目录执行 做只读探测,只保留 ;不要附完整 doctor 输出。 只表示安装来源是桌面 App,不授权本 Skill 启动 App、服务或重新安装。不存在就写“未检测到”。
node scripts/ensure-runtime.cjs --jsonstate / kind / version / healthy / error.codekind=desktop-managedFirst 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 from the plugin root directory for read-only detection, and only retain ; 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.
node scripts/ensure-runtime.cjs --jsonstate / kind / version / healthy / error.codekind=desktop-managed2. 选择固定仓库
2. Select a Fixed Repository
工作区根目录不一定是 Git 仓库,禁止从当前目录猜 remote:
| 问题组件 | target | GitHub 仓库 |
|---|---|---|
| Runtime、Studio、UI、CLI、API、时间线、渲染 | | |
| Skill、Marketplace、安装编排、MCP App、工作流说明 | | |
跨组件问题优先报最先违反契约的仓库,并在正文说明另一个组件;无法判断时先问用户。
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 | | |
| Skill, Marketplace, Installation Orchestration, MCP App, Workflow Instructions | | |
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. 生成结构化输入
3. Generate Structured Input
以 把候选写入当前任务临时目录的 JSON,不写产品规范文件;提交结束后删除临时 JSON 与 Markdown:
umask 077json
{
"schemaVersion": 1,
"target": "product",
"component": "Studio",
"title": "Runtime 0.1.1 无法打开 HyperFrames 顶层剪口播视图",
"summary": "一句话说明影响",
"steps": ["第一步", "第二步"],
"expected": "预期行为",
"actual": "实际行为",
"environment": {
"Runtime": "0.1.1",
"OS": "macOS"
},
"evidence": ["只放最小、可公开的诊断"],
"acceptance": ["可验证的修复条件"]
}禁止放入:
- API Key、Token、Cookie、;
.env - 视频、音频、截图、完整日志或转录正文;
- 客户名、原视频名、真实 、用户绝对路径;
projectId - 未经用户允许的私人仓库内容。
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:
umask 077json
{
"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, ;
.env - Videos, audio, screenshots, complete logs or transcribed text;
- Customer names, original video names, real , user absolute paths;
projectId - Private repository content without user permission.
4. 先生成并展示脱敏草稿
4. Generate and Display the Desensitized Draft First
从当前 定位脚本:
SKILL.md先按检查更新「就绪检查」第一步定位插件根
(从本 Skill 的实际源文件路径向上两级;不得跑 或搜索其他
cache;下述 都代入该字面路径)。本 Skill 只用它定位脚本,
不装 Runtime、不起服务:
codex plugin list<插件根>bash
node "<插件根>/skills/chengfeng-report-bug/scripts/report-bug.cjs" draft --input "<报告JSON文件>" --output "<草稿输出文件>" --jsontargetproductskillstext
repo
label=bug
title
完整脱敏正文同时保存返回的 ,并向用户展示 与过期时间。用户没有明确确认这份公开内容时停止;仅仅检测到错误不等于同意上报。令牌只绑定草稿内容,并不自行证明用户同意;Agent 仍必须等待明确回复。确认只对当前任务中紧接着的一次提交有效,30 分钟过期,不能跨任务或重复使用。
confirmationReceiptconfirmationTokenLocate the script from the current :
SKILL.mdFirst 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:
codex plugin list<plugin root>bash
node "<plugin root>/skills/chengfeng-report-bug/scripts/report-bug.cjs" draft --input "<report JSON file>" --output "<draft output file>" --jsontargetproductskillstext
repo
label=bug
title
Full desensitized bodySave 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.
confirmationReceiptconfirmationToken5. 确认后提交
5. Submit After Confirmation
只对刚刚展示、内容未变化的草稿提交:
bash
node "<插件根>/skills/chengfeng-report-bug/scripts/report-bug.cjs" submit --input "<报告JSON文件>" --target "<目标仓库>" --confirmed --confirm-token "<确认token>" --receipt "<确认回执文件>" --json固定规则:
- 提交前脚本检查 、目标仓库 Issues 与
gh auth status标签;失败时保留草稿。bug - 相同组件、复现步骤与实际结果的指纹已存在时返回原 Issue URL,不用宽泛标题冒充重复。
- 确认后正文发生变化时返回 ,必须重新预览。
confirmation_mismatch - 确认凭据过期或已使用时返回 ,必须重新预览。
confirmation_expired / confirmation_replayed - 创建结果没有明确 Issue URL 时,不自动重试;它可能已经创建。
- 只有拿到 GitHub Issue URL,才能说“已经上报”。
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>" --jsonFixed rules:
- Before submission, the script checks , target repository Issues, and the
gh auth statuslabel; retain the draft if it fails.bug - 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.
confirmation_mismatch - Return if the confirmation credentials are expired or already used; re-preview is required.
confirmation_expired / confirmation_replayed - 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
- :说明草稿已完成但未提交,禁止声称成功。
github_auth_required - :保留草稿和手工入口,不循环重试。
github_issue_create_failed - /
confirmation_required:重新展示精确公开内容。confirmation_mismatch - 目标仓库无权限或不可见:不要改报任意仓库;让用户决定是否改报公开 Skills 仓。
- : Indicates the draft is completed but not submitted; do not claim success.
github_auth_required - : Retain the draft and manual entry; do not retry in a loop.
github_issue_create_failed - /
confirmation_required: Re-display the exact public content.confirmation_mismatch - 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.