본문으로 건너뛰기
cccskills
무료GitHub에 공개

ticket-writing

Write GitHub issues and PR descriptions. Covers the epic and sub-issue structure, linking a requirement instead of copying spec text, reading the project's label set and templates rather than guessing them, title format, and what a reviewer needs in a PR body. Use when opening an issue, turning a spec requirement into work, filing a bug, or writing a PR description. Triggers - "open an issue", "write a ticket", "file a bug", "turn this into work", "write the PR description".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구GitHub
설치 방법 보기

포함된 파일(1)

  • SKILL.md4.5 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Writing tickets

An issue says what is left to do. The spec says what should be true. Keeping those apart is the whole job.

Read the project's conventions first

Labels, templates and title format are per-project and guessing them produces a ticket someone has to correct by hand:

ls .github/ISSUE_TEMPLATE/ .github/PULL_REQUEST_TEMPLATE.md 2>/dev/null
gh label list --limit 100
git log --oneline -20

Many projects also keep a ticket doc (docs/TICKETS.md, CONTRIBUTING.md) that states which label axes are required and what the board columns mean. Read it before opening anything; it outranks this skill.

Never copy spec text

Link the requirement, do not restate it. Copies rot, and the moment they disagree nobody knows which one is the product.

Implements: LIB-4, LIB-7

Resolve an ID to its chapter through the spec's index. If the behaviour has no requirement yet, the spec change comes first: use the spec-writing skill, then open the issue against the new ID. Where the project keeps no spec, state the intended behaviour in the ticket and accept that the ticket is now the record.

Structure

Where the project runs epics, each domain has one long-lived epic issue and implementation work is opened as a sub-issue of it, so the board rolls up without anyone maintaining a checklist by hand.

A sub-issue is one story: one requirement, one reviewable change, one PR. Work that needs three PRs is three sub-issues.

Labels

Take the axes from gh label list and the project's ticket doc, not from memory. The common shape is one namespaced axis for the kind of work, one for urgency, and one or more for where in the stack it lands, plus a couple of flow labels for waiting rather than working.

Two mistakes worth naming, because both are easy and both are wrong:

  • Assuming an axis is optional because you did not see it. A project with a priority axis expects one on every ticket, and a triager has to add it later.
  • Assuming two axes mean the same thing. A stack area and a product domain are different vocabularies that happen to share a word or two. Map to whichever one the label list actually holds.

Leave the automation's labels alone. Dependency and language labels are usually applied by a bot, and applying them by hand fights it.

What a good ticket carries

  • What needs doing, in the reader's terms, not the implementation's.
  • Why now. What it unblocks, or what it costs to keep not doing it. "It bothers me" is a real reason, written down.
  • Done when. The observable condition. If you cannot name one, the ticket is not ready and probably wants the project's discussion label instead.

Title: <surface>: <imperative summary>, lower case, no trailing full stop. ci: cache cargo builds between release jobs reads right. Fix the CI does not.

Leave the design out unless it is the point. A ticket that dictates the patch removes the reason to have an engineer read it.

Security

Never open a public issue for a vulnerability. It goes through the project's private channel: a security advisory, the address in SECURITY.md, or the contact link the issue chooser offers.

PR descriptions

Open the project's PR template and answer every section it asks for. The four that recur, and the real answer to each:

  • What: one paragraph, what changes and why this way rather than another.
  • Closes: Closes #123, or "no issue" and a sentence on why it did not need one.
  • Checks: the boxes are claims. Tick one only after running the command it names, and where one failed, say which and why rather than leaving it unticked in silence.
  • Risk: what breaks if this is wrong, and how a reviewer would notice. "None, it is a docs typo" is a fine answer.

Where the project squash-merges, the PR title becomes the commit on the default branch, so it follows whatever commit convention git log shows.

Run the unslop skill over the body before opening. A PR description is the most-read prose in a repository and the most likely to arrive padded.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

One file, one job, and short enough to hold in your head. Covers the size policy (hard-split over 300 lines, split 200 to 300 at a seam, aim for 150), what a natural seam is and where to cut, the exemptions, the dependency rules that decide where the split lands, and the signals that a file is already two files. Use before adding to a file that is already long, when naming a new file, when a function has nowhere obvious to live, or when a review says a file is doing too much. Triggers - "this file is too long", "where should this go", "split this file", "is this file too big", "one responsibility".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kromatv/kroma622026년 10월 21일 업데이트

naming

무료

What things get called. A file is named after its export in the project's case convention, a suffix is a resolution instruction rather than decoration, an index file only re-exports, and some symbol names are always wrong (utils, helpers, V2, Enhanced, New). Covers learning a tree's local vocabulary before adding to it, test and platform-variant naming, and the per-language conventions. Use when creating a file or directory, naming a test file, adding a platform variant, or when a name has to change. Triggers - "what should I call this file", "where does this file go", "naming convention", "kebab or camel", "name this test".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kromatv/kroma622026년 10월 21일 업데이트

Spawn the comment hunter, fix accepted findings, and offer encodings for claimed constraints.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kromatv/kroma622026년 10월 21일 업데이트

Write a short release note people finish reading. Picks the few changes a user will notice from the pull requests since the last release, names each by what the reader can now do, keeps to a length budget, writes every language from the intent instead of translating, and traces every line to a PR. Use when cutting a release, or filling a GitHub Release body, a store "what's new", a package changelog or an in-app what's new screen. Triggers - "write the release notes", "release notes for 0.4.0", "what's new", "changelog for this release", "notes de version".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kromatv/kroma622026년 10월 21일 업데이트

Rust best practices. Use when reading or editing any .rs file, designing a crate's public API, choosing an error type, splitting a workspace, or writing async code on tokio. Triggers - "rust best practices", "is this idiomatic", "should this be a newtype", "anyhow or thiserror", "why does the borrow checker", "review this Rust".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kromatv/kroma622026년 10월 21일 업데이트

Write cargo tests. A test name is a sentence, the body is setup, mock, test and verify blocks separated by blank lines with no comments, and shared setup lives in a named test-support module rather than in each test. Covers naming, the block shape, where a test file goes, async and time, workspaces, and running one crate or one filter. Use when adding or changing any #[test] or #[tokio::test], or when Rust coverage has to come up. Triggers - "write a rust test", "cargo test", "test this crate", "cover this handler".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kromatv/kroma622026년 10월 21일 업데이트

kromatv의 스킬 모두 보기

이 스킬의 문제 신고