comment
Use this skill when another skill or the user needs to post a structured comment to a Linear issue.
Skill by asabina-de
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/asabina-de-comment
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/comment
Tools it pre-approves 3
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
mcp__claude_ai_Linear__save_commentmcp__claude_ai_Linear__list_commentsmcp__claude_ai_Linear__get_issue
What's inside
- Skill name
comment- Description
- Use this skill when another skill or the user needs to post a structured comment to a Linear issue. This skill owns the commenting protocol: numbered threads (T1, T2, …), routing each comment to the right open thread, provenance markers, formatting, and closing a thread with a summary. Trigger when a skill wants to post an assessment, finding, plan, status update, or session summary to a Linear issue. Also trigger when the user invokes `/comment`. Do NOT use this skill for reading comments for their content (use list_comments directly) or for creating/updating issues (use save_issue directly). This skill only handles comment creation with proper formatting and threading.
- License
- CC-BY-4.0
- Allowed tools
- mcp__claude_ai_Linear__save_comment, mcp__claude_ai_Linear__list_comments, mcp__claude_ai_Linear__get_issue
- Instructions
- 205 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# comment
Post structured comments to Linear issues. This skill owns the **how** of commenting — formatting, provenance, threading. Calling skills own the **what** — when to comment and what content to include.
> **Why this protocol exists.** An issue page shows every top-level comment expanded. One top-level comment per event (assessment, spike, plan, CI result) turns the page into a wall the reader has to scroll through to make sense of. Replies fold under their thread, and a resolved thread folds away entirely. So: few top-level comments, each a thread that can be closed, and everything else a reply.
> **Sync note:** Every skill that posts comments delegates here and must not contradict this protocol: `pair`, `issue`, `align`, `design`, `pr`. When the protocol changes, check those skills for wording that still describes the old shape.
## Protocol
```
Issue comments:
├── T1: redesign the auth flow ← current thread: general work
│ ├── Assessment
│ ├── Plan
│ ├── Step 1 complete
│ └── ✅ Summary: what was tried, how it ended → human resolves
├── T2 Spike: does the SDK support PKCE ← typed thread: its own question
│ └── ✅ Answer → human resolves
└── T3: rework after review ← next current thread
└── …
```
### Vocabulary
- **Description** — the issue's own text. Not a comment.
- **Thread** — a top-level comment plus the replies under it.
- **Top-level comment** — the comment that starts a thread. Its first line is the thread's title.
- **Reply** — a comment posted under a top-level comment, via `parentId`.
### Thread titles
Every top-level comment is titled `T{n}[ {Type}]: {one-line summary}`:
- **`T{n}`** — one sequence per issue, shared by all threads. The next thread takes the highest existing number + 1, counting resolved threads too. `T`, not `#`, because a bare `#85` already reads as a PR number.
- **Type** — optional. General work has none. Anything else names what the thread is, e.g. `Spike`, `Fix`, `Refactor`. These are examples, not an enforced list.
- **Summary** — one line saying what the thread is about, not what happened in it.
Example titles: `T1: redesign the auth flow`, `T2 Spike: does the SDK support PKCE`, `T3 Fix: token refresh drops the session`. These are the title alone; the heading line wraps it in bold and appends `(skill: {caller-skill})` (see **Comment anatomy**).
**The current thread** is the highest-numbered unresolved thread with no type. It is where anything without a better home goes.
Issues that predate this protocol have top-level comments without a `T{n}` title. Treat unresolved ones as routing candidates, never as the current thread, and start numbering at `T1`.
### Comment anatomy
Every comment has three parts:
1. **Heading line:** for a top-level comment, `**T{n}[ {Type}]: {summary}** (skill: {caller-skill})`; for a reply, `**{Title}** (skill: {caller-skill})`. Spell out `skill:` — a bare `(pair)` means nothing to a reader who doesn't know the skill names
2. **Provenance line:** `*[ai:claude-code]*`
3. **Body:** the content, in markdown
Example top-level comment, with every part present — number, type, summary, caller skill, provenance and body:
```markdown
**T2 Spike: does the SDK support PKCE** (skill: pair)
*[ai:claude-code]*
**Verdict:** Feasible, with caveats.
```
Example reply:
```markdown
**Assessment** (skill: pair)
*[ai:claude-code]*
**Clear and ready:**
- Add Google OAuth callback endpoint
- Store refresh tokens in existing session table
```
### Reading the threads
Routing needs to know which threads exist and which are open. `list_comments` returns every comment with its `parentId` (`null` for a top-level comment) and `resolvedAt` (`null` while open). Read it in full:
- **At session start, read greedily.** One full `list_comments` read of the issue, before the first comment. Prefer spending the tokens over misreading the situation.
- **Within a session, trust the context.** Once the threads and their IDs are in view, reuse them. Read again only if the context was compacted and the IDs are gone. Parallel sessions on one issue are rare by design, so no re-read before each post.
**Where the tokens go.** `list_comments` cannot filter to top-level comments: it returns every reply with its full body, and long bodies make the read expensive on a busy issue. When that cost matters, hand the read to a subagent and have it return only an index: number, title, comment ID, resolved or not, date of the last reply. The default is still the greedy read.
### Routing a comment
Before posting, decide where the comment goes. This is one self-contained choice, so a fast judgment model (e.g. a System One model such as TypeSafe's Jev) could take it over later:
- **Input:** the draft comment, and the unresolved threads (title plus a line of their latest content).
- **Output:** one thread, or **none of the above**.
Then:
| Outcome | Action |
|---|---|
| A thread fits the topic | **Reply** in that thread |
| Nothing fits, and the content is routine progress | **Reply** in the current thread |
| Nothing fits, and the topic may deserve its own conversation | **Ask the user** whether to open `T{n+1} {Type}: …` or reply in the current thread. With no user present (walk-away, managed agent), reply in the current thread and say in the body that it may deserve its own thread |
| No current thread exists (new issue, or all resolved) | **Open** `T{n+1}: …` as the new current thread |
Open a typed thread only for a topic that can be resolved on its own: a spike that answers one question, a fix pulled out of the main work. Assessments, plans, step completions, PRs and CI results are routine progress and belong in the current thread.
### Closing a thread
A thread closes with a reply whose heading starts with ✅ and whose body is its summary: what was tried, how it concluded, and what (if anything) carries over. Then ask a human to resolve it. The Linear MCP can read `resolvedAt` but cannot set it, so resolving is a human action. Until it happens, the thread stays a routing candidate.
A resolved thread folds away, so the list of resolved threads becomes the issue's history: each one's ✅ reply is the tl;dr.
### Provenance
The provenance marker identifies the authoring surface:
- `*[ai:claude-code]*` — comment authored by Claude Code (interactive session)
- `*[ai:managed-agent]*` — comment authored by a managed agent (walk-away)
The marker always appears on line 3 (after heading + blank line), never inline or at the end.
### Mid-thread events
When something changes mid-thread (plan adjusted, step skipped, blocker found), use these emoji prefixes on the reply's heading:From asabina-de/kb, CC-BY-4.0.
More from asabina-de/kb
- 0.587score
design
asabina-de
Use this skill when the user wants to do visual design work — exploring brand graphics, creating Figma compositions, iterating on visual concepts, or working…
SkillAFreshness: A★ 1Claude Code +9 - 0.574score
pair
asabina-de
Use this skill when the user wants to pair-program on a ticket — working through a Linear issue collaboratively with the AI driving and the human navigating.
SkillAFreshness: A★ 1Claude Code - 0.558score
align
asabina-de
Use this skill when the user wants to bring a repo's conventions into alignment with the KB standards.
SkillAFreshness: A★ 1Claude Code - 0.549score
issue
asabina-de
Use this skill when the user asks you to turn a design note's action items into Linear issues, OR when the user wants to iterate on an existing Linear issue…
SkillAFreshness: A★ 1Claude Code - 0.549score
pr
asabina-de
Use this skill when the user wants to create a pull request for the current branch.
SkillAFreshness: A★ 1Claude Code +9 - 0.497score
figma-conventions
asabina-de
Use this skill when the user is about to do design work in Figma — creating or editing components, building layouts, working with variables/tokens, or…
SkillCFreshness: C★ 1Claude Code +9 - 0.472score
imagegen
asabina-de
Use this skill when the user wants to generate design concept images, visual references, or mood boards for design exploration.
SkillCFreshness: C★ 1Claude Code +9 - 0.468score
decision
asabina-de
Use this skill when the user asks you to start, extend, or record a decision record — ideation around a design problem, architectural choice, trade-off…
SkillCFreshness: C★ 1Claude Code - 0.467score
ping
asabina-de
Use this skill when the user says something nonsensical, says 'ping', 'blah', or sends a message without clear intent or additional context.
SkillCFreshness: C★ 1Claude Code +9 - 0.464score
commit
asabina-de
Use this skill when the user asks for a commit message suggestion, staging advice, or guidance on how to structure a commit — or when the user invokes…
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 15, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- CC-BY-4.0
- Repository
- github.com/asabina-de/kb
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from asabina-de
- 0.587score
design
asabina-de
Use this skill when the user wants to do visual design work — exploring brand graphics, creating Figma compositions, iterating on visual concepts, or working…
SkillAFreshness: A★ 1Claude Code +9 - 0.574score
pair
asabina-de
Use this skill when the user wants to pair-program on a ticket — working through a Linear issue collaboratively with the AI driving and the human navigating.
SkillAFreshness: A★ 1Claude Code - 0.558score
align
asabina-de
Use this skill when the user wants to bring a repo's conventions into alignment with the KB standards.
SkillAFreshness: A★ 1Claude Code - 0.549score
issue
asabina-de
Use this skill when the user asks you to turn a design note's action items into Linear issues, OR when the user wants to iterate on an existing Linear issue…
SkillAFreshness: A★ 1Claude Code - 0.549score
pr
asabina-de
Use this skill when the user wants to create a pull request for the current branch.
SkillAFreshness: A★ 1Claude Code +9 - 0.497score
figma-conventions
asabina-de
Use this skill when the user is about to do design work in Figma — creating or editing components, building layouts, working with variables/tokens, or…
SkillCFreshness: C★ 1Claude Code +9
Cite this page
comment skill. Agent Mart. https://agentmart.dev/skills/asabina-de-comment (last updated 2026-10-24)