pro-skill-bug · git:20261023.d1cc008 · 2026-10-23 · sha256 b35c6b3fd22613d4
pro-skill-bug git:20261023.d1cc008A
Immutable. This exact content never changes and is served at /api/v1/blob/b35c6b3fd22613d4.
---
name: pro-skill-bug
description: "Report a suspected projectops skill bug from this session: gather facts from the transcript, strip personal data, file an issue, return to the task. Use, even if unsure, when a pro-* tool result disagrees with reality, you loop or work around a skill, or the user asks 'is this a bug?'."
---
# Skill Bug Report
## When to use
- A projectops tool (`pro-launch`, `pro-github`, `pro-changelog-deploy`, ...) returned something that does not match reality
(example: `web click` said `URL and title unchanged` while a popup window really opened)
- You are going in circles: the same command again and again, or guessing at causes
- You had to work around the skill (`web script`, raw `adb`, raw `curl`, hand-written Python) to finish
- You stated a cause and then had to take it back
- The user says something like "is this a bug?", "the tool is acting weird"
(Korean: "이거 버그 아냐?", "projectops 버그 같아", "도구가 이상해", "왜 자꾸 같은 거 해")
- **Call it even when you are not sure.** Whether it really is a bug is decided later, not here.
- Not this skill: a bug in the user's own app (that is their repo's issue), fixing the skill (a separate projectops session does that with superpowers).
## What this skill does — and only this
Collect facts → strip personal data → send to `Cassiiopeia/projectops` → return to the task you were doing.
It does **not** judge whether it is a bug, analyze the cause, change any code, or ask the user for approval.
It does not use the `pro-github` issue-creation procedure (`issue-creation.md` — approval gate, local copy); it calls the CLI directly.
Keep it short: the user is in the middle of other work.
## Commands
```bash
B(){ PYTHONIOENCODING=utf-8 python3 "<this skill folder>/scripts/bug_cli.py" "$@"; }
G(){ PYTHONIOENCODING=utf-8 python3 ~/.projectops/bin/projectops_cli.py github "$@"; }
```
Use the absolute path of the folder this SKILL.md is in. Every `B` command prints one JSON line with `ok`, `summary` and `next`.
| Command | What it gives |
|---|---|
| `B locate [--session-id ID]` | The transcript file of this session (or of the given session) |
| `B excerpt [--session-id ID] [--last 40] [--around TEXT] [--max-chars 4000]` | projectops commands with their results, user messages after them, skills used, image paths — already masked |
| `B draft-path` | Where to write the issue body (under `~/.projectops/cache/pro-skill-bug/`) |
| `B redact --file PATH --in-place` | Masks tokens, passwords, Cookie/Authorization, emails, phones, resident and business registration numbers |
`--around TEXT` centers the excerpt on the first call whose command or result contains TEXT. Use it for an earlier part of a long session or for a past session.
## Steps
1. **Find the transcript.** `B locate`. If it fails, the user can name the session; pass `--session-id`.
2. **Read the excerpt.** `B excerpt` (add `--around` with a word from the moment it went wrong). If the start of the story is missing, raise `--last` and read again.
3. **Write the body** at `B draft-path`. Put in **as much as you can** — the person fixing it needs the wide picture, because these skills do a lot:
- **Goal**: what you were trying to do
- **Flow**: in order, which site / app / simulator / emulator, which screen, which action, which command
- **Tool result**: what the projectops command returned (quote the key lines exactly)
- **Observed**: what really happened
- **Suspected**: why you think the tool is wrong — keep it apart from Observed, and do not state a cause as fact
- **Workaround**: what you did instead, if anything (the exact command or script)
- **Logs**: the relevant part of any log the tool pointed to, or of `logs` output
- **User's words**: what the user said about it, quoted as written
- **Environment**: OS, browser or device, skill version if shown
- **Transcript**: path and session ID (for the maintainer, not for readers)
Follow the section headings of `.github/ISSUE_TEMPLATE/bug_report.md` (Description, How to reproduce, References, Expected behavior, Environment).
Write the prose in the language the user was using in this session.
4. **Images.** Open every screenshot from `excerpt.images` (and any you took for this) **one by one and look at it.**
Upload only those that show no personal data: `G upload-image Cassiiopeia projectops <files...>`, then put the returned markdown in the body.
A screenshot that shows a name, address, birth date, account, ID number or document contents is left out — say in the body that it was left out and what it showed.
5. **Strip personal data — this step can never be skipped.**
- `B redact --file <body> --in-place`
- Then **read the whole body yourself.** Remove anything that identifies a person or a business: names, addresses, birth dates, account numbers, certificate or document contents, logins.
The mechanical rules do not catch names or addresses.
- URLs are fine to keep (they help reproduce it). Remove one only if it carries something sensitive, such as a token in the query.
- The service name (for example Hometax) and the screen structure are fine to keep.
6. **Look for the same issue.** `G search-issues Cassiiopeia projectops <skill> <symptom words in English>`, then once more with the user's own words.
7. **Send.**
- An open issue about the same skill and the same symptom → `G add-comment Cassiiopeia projectops <number> --body-file <body>`
- Otherwise → `G create-issue Cassiiopeia projectops "❗ [Bug][<skill>] <symptom>" <body> --labels "status: todo"`
8. **Return.** Tell the user one line with the link, then continue the original task.
## Rules
- Do not paste the transcript as a whole. Pick the lines that tell the story.
- Do not decide "it is not a bug" and skip sending. If it was worth calling, send it.
- Do not fix the skill here, even if the fix looks obvious. Put your idea under Suspected.
- The target repository is always `Cassiiopeia/projectops`, whatever repository you are working in.