
ticket-craft
Create Jira/Asana/Linear tickets optimized for Claude Code execution - AI-native ticket writing
- Installs
- 276
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/alinaqi/maggy --skill ticket-craft- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads ticket-craft automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Ticket Craft Skill
Write software tickets that AI agents can execute autonomously.
Purpose: Define a ticket format that combines software engineering best practices (INVEST, Given-When-Then, Definition of Ready) with Claude Code-specific context requirements. Every ticket created with this skill is "Claude Code Ready" - meaning an agent can pick it up and execute it without asking clarifying questions.
Works with: Jira, Asana, Linear, GitHub Issues, or any ticket system.
Core Principle
┌─────────────────────────────────────────────────────────────────┐
│ A TICKET IS A PROMPT │
│ ────────────────────────────────────────────────────────────── │
│ │
│ Traditional tickets are written for humans who can: │
│ - Ask clarifying questions in Slack │
│ - Draw on institutional knowledge │
│ - Infer intent from vague descriptions │
│ │
│ AI agents cannot do any of this. │
│ │
│ Every ticket must be SELF-CONTAINED: │
│ - Explicit file references (not "the auth module") │
│ - Pattern references (not "follow our conventions") │
│ - Verification criteria (not "make sure it works") │
│ - Constraints (not just what to do, but what NOT to do) │
│ - Test commands (not "run the tests") │
│ │
│ If Claude Code can execute it without asking a question, │
│ the ticket is ready. If it can't, it's not. │
└─────────────────────────────────────────────────────────────────┘
The INVEST+C Criteria
Standard INVEST plus C for Claude-Ready:
| Criterion | Question | Fails If... |
|---|---|---|
| I - Independent | Can this be completed without waiting on another ticket? | Blocked by undocumented dependencies |
| N - Negotiable | Is there room to adjust implementation approach? | Over-specifies implementation details |
| V - Valuable | Can you articulate who benefits and how? | No clear user or business value |
| E - Estimable | Does the team understand enough to size it? | Too vague or too large to estimate |
| S - Small | Can one person finish this in 1-3 days? | More than 5 acceptance criteria |
| T - Testable | Can you write a pass/fail test for it? | Uses vague language like "fast" or "good UX" |
| C - Claude-Ready | Can an AI agent execute this without clarifying questions? | Missing file refs, patterns, verification, or constraints |
Ticket Types
1. Feature Ticket
## [PROJ-XXX] {Verb} {Feature} for {User}
**Type:** Feature
**Priority:** {Critical | High | Medium | Low}
**Points:** {1 | 2 | 3 | 5 | 8}
**Labels:** {frontend, backend, api, database, etc.}
**Epic:** {Parent epic}
---
### User Story
As a {specific persona},
I want to {specific action},
so that {measurable benefit}.
### Background
{1-2 paragraphs on why this matters. Link to product brief, user research,
or business justification. Include any relevant metrics or user feedback.}
### Acceptance Criteria
**AC1: {Happy path scenario}**
Given {precondition},
when {action},
then {expected result}.
**AC2: {Edge case / error scenario}**
Given {precondition},
when {action},
then {expected result}.
**AC3: {Boundary condition}**
Given {precondition},
when {action},
then {expected result}.
### Out of Scope
- {Explicitly state what this ticket does NOT include}
- {Prevents scope creep and keeps ticket small}
---
### Claude Code Context
#### Relevant Files (read these first)
- `src/services/example.ts` - Existing service to extend
- `src/models/example.ts` - Data model definition
- `src/api/routes/example.ts` - Existing endpoint patterns to follow
#### Pattern Reference
Follow the pattern in `src/services/user.ts` for service layer implementation.
Follow the pattern in `src/api/routes/users.ts` for route definition.
Follow the pattern in `tests/services/user.test.ts` for test structure.
#### Database Changes
- {Table to create/modify, columns, types}
- {Migration file location: `supabase/migrations/` or `prisma/migrations/`}
- {RLS policies if using Supabase}
#### API Contract
POST /api/{resource} Request: { field1: string, field2: number } Response: { id: string, field1: string, created_at: string } Error: { error: string, code: number }
#### Constraints
- Do NOT modify {specific files or modules}
- Do NOT add new dependencies without approval
- Follow existing error handling in `src/core/exceptions.ts`
- {Any performance budgets: response time < 200ms, bundle size < 50KB}
#### Verification
```bash
# Run specific tests
npm test -- --grep "{feature name}"
# Lint check
npm run lint
# Type check
npm run typecheck
# Full validation
npm test -- --coverage
Environment Variables
- Existing: {list vars already in .env that are relevant}
- New required: {list any new vars needed}
Dependencies
- Blocked by: {PROJ-XXX} ({brief description})
- Blocks: {PROJ-YYY} ({brief description})
Design
- Mockup: {link to Figma/design if applicable}
---
### 2. Bug Ticket
```markdown
## [BUG-XXX] Fix: {Component} - {Symptom}
**Type:** Bug
**Priority:** {Critical | High | Medium | Low}
**Points:** {1 | 2 | 3 | 5}
**Labels:** {regression, ux-bug, data-bug, security-bug}
**Severity:** {Blocks users | Degrades experience | Cosmetic}
---
### Bug Summary
{One sentence: what is broken and who is affected.}
### Environment
- Browser/OS: {e.g., Chrome 120 / macOS 14.2}
- Environment: {Production | Staging | Local}
- User type: {Anonymous | Authenticated | Admin}
- First observed: {date}
### Steps to Reproduce
1. {Navigate to / perform action}
2. {Perform next action}
3. {Perform next action}
4. **Observe:** {incorrect behavior}
### Expected Behavior
{What should happen instead.}
### Actual Behavior
{What actually happens. Include error messages, console output, screenshots.}
### Impact
- Users affected: {percentage or count}
- Frequency: {every time | intermittent | specific conditions}
- Workaround: {exists / none}
---
### Claude Code Context
#### Suspected Root Cause
{Where the bug likely lives, if known.}
- File: `src/components/LoginForm.tsx:87`
- Issue: `isSubmitting` state set to `true` on validation error but never reset
#### Relevant Files
- `src/components/LoginForm.tsx` - Form component with the bug
- `tests/components/LoginForm.test.tsx` - Existing tests (gap here)
- `src/hooks/useAuth.ts` - Auth hook used by the form
#### Test Gap Analysis
- Existing tests cover: {what's currently tested}
- Missing test: {what test would have caught this bug}
#### Bug Fix Workflow (TDD)
1. Write a failing test that reproduces the bug
2. Verify the test fails (confirms the bug exists)
3. Fix the bug with minimum code change
4. Verify the test passes
5. Run full test suite to check for regressions
#### Verification
```bash
# Run the specific test
npm test -- --grep "LoginForm submit"
# Run related tests
npm test -- src/components/LoginForm.test.tsx
# Full regression check
npm test
Constraints
- Fix the bug only - do NOT refactor surrounding code
- Do NOT change the component's public API
- Ensure all existing tests continue to pass
---
### 3. Tech Debt Ticket
```markdown
## [TECH-XXX] Refactor: {Area} - {Improvement}
**Type:** Tech Debt
**Priority:** {High | Medium | Low}
**Points:** {3 | 5 | 8}
**Labels:** {refactor, performance, maintainability, testing}
---
### Problem Statement
{What is wrong with the current implementation and why it matters.
Include concrete pain points: slow CI, frequent bugs, developer confusion.}
### Current State
- File: `{path}` ({N} lines)
- Test coverage: {X}%
- Cyclomatic complexity: {N}
- Related bugs: {PROJ-XXX, PROJ-YYY}
- Pain frequency: {how often this causes issues}
### Proposed Change
{What specifically should change and why this approach.}
### Acceptance Criteria
- [ ] {Specific structural change completed}
- [ ] All existing tests pass without modifying test assertions
- [ ] No public API changes (existing consumers unaffected)
- [ ] Test coverage >= {X}%
- [ ] {Measurable improvement metric}
### Risk Assessment
- Risk level: {Low | Medium | High}
- Mitigation: {run full regression, deploy behind flag, etc.}
### Business Justification
{Why this is worth doing now. E.g., "Reduces average bug fix time from 4h to 1h"
or "Enables upcoming feature PROJ-XXX which requires clean separation."}
---
### Claude Code Context
#### Relevant Files
- `{file}` - Current implementation to refactor
- `{test file}` - Existing tests (must not break)
- `{dependent file}` - Consumer of the API being refactored
#### Pattern Reference
Follow the pattern established in `{good example file}` for the new structure.
#### Constraints
- Do NOT change public APIs or exports
- Do NOT modify test assertions (tests should pass as-is)
- Do NOT introduce new dependencies
- Keep backwards compatibility
#### Verification
```bash
# Existing tests must pass unchanged
npm test
# No type errors
npm run typecheck
# Lint clean
npm run lint
# Coverage target
npm test -- --coverage
---
### 4. Epic Breakdown Ticket
```markdown
## [EPIC-XXX] {Epic Name}
**Type:** Epic
**Priority:** {Critical | High | Medium}
**Target:** {Sprint/milestone}
---
### Objective
{One paragraph: what this epic achieves and why it matters.}
### Success Metrics
- {Measurable outcome 1}
- {Measurable outcome 2}
### User Workflows
{The user journey this epic covers, broken into steps.}
1. {Step 1: Discovery/Entry}
2. {Step 2: Core Action}
3. {Step 3: Completion/Result}
### Ticket Breakdown
| # | Ticket | Type | Points | Dependencies |
|---|--------|------|--------|-------------|
| 1 | {title} | Feature | 3 | None |
| 2 | {title} | Feature | 5 | #1 |
| 3 | {title} | Feature | 3 | None |
| 4 | {title} | Feature | 2 | #2, #3 |
| 5 | {title} | Tech Debt | 3 | None |
### Slicing Strategy
{How the epic was broken down. Reference the technique used.}
### Agent Team Mapping
{If using agent teams, how features map to agents.}
- Feature Agent 1: Tickets #1, #2
- Feature Agent 2: Tickets #3, #4
- Parallel execution: #1 and #3 can run simultaneously
- Sequential: #2 depends on #1, #4 depends on #2 and #3
Epic Slicing Techniques
When breaking an epic into tickets, use one of these strategies:
| Technique | When to Use | Example |
|---|---|---|
| By workflow step | Clear user journey | Browse > Play > Save > Share |
| By data variation | Multiple data types | Text posts, images, videos |
| By user role | Different permissions | Anonymous, authenticated, admin |
| By CRUD | Data operations | Create, Read, Update, Delete |
| Happy path first | Incremental delivery | Success flow first, then errors |
| By boundary | System integration | Frontend, API, database separately |
Rules of Thumb
- Each ticket: 1-3 days of work for one developer/agent
- More than 5 acceptance criteria = split the ticket
- More than 8 story points = definitely split
- Every ticket should be independently deployable (even behind a flag)
- Order tickets: simplest, most foundational first
The Claude Code Ready Checklist
Before a ticket is ready for an AI agent to execute, verify:
┌─────────────────────────────────────────────────────────────────┐
│ CLAUDE CODE READY CHECKLIST │
│ ────────────────────────────────────────────────────────────── │
│ │
│ CONTEXT │
│ ☐ Relevant files listed with full paths │
│ ☐ Pattern reference points to a real file to follow │
│ ☐ API contract defined (request/response shapes) │
│ ☐ Database changes specified (tables, columns, migrations) │
│ ☐ Environment variables listed (existing + new) │
│ │
│ SCOPE │
│ ☐ Out of Scope section explicitly states what NOT to do │
│ ☐ Constraints section lists files/modules NOT to modify │
│ ☐ Ticket covers one logical change (atomic) │
│ ☐ Estimable at ≤ 5 story points │
│ │
│ VERIFICATION │
│ ☐ Test command provided (exact command, not "run tests") │
│ ☐ Lint command provided │
│ ☐ Typecheck command provided │
│ ☐ Acceptance criteria are Given-When-Then or checkboxed │
│ ☐ Each criterion is independently pass/fail testable │
│ │
│ QUALITY │
│ ☐ Title is imperative verb + object + context │
│ ☐ Title under 80 characters │
│ ☐ Description explains WHY, not just WHAT │
│ ☐ 2-5 acceptance criteria (not more) │
│ ☐ No vague language ("fast", "good UX", "clean") │
│ │
│ If any box is unchecked, the ticket is NOT ready. │
└─────────────────────────────────────────────────────────────────┘
Anti-Patterns (Never Do These)
1. The Title-Only Ticket
Title: Fix login
Description: (empty)
Why it fails: No context, no acceptance criteria, no file references. Claude Code will guess and likely guess wrong.
2. The Novel
Title: Implement new onboarding
Description: (3 pages mixing UI, backend, analytics, email, and future ideas)
Why it fails: Not small, not independent. Agent teams can't parallelize this. Split into 5+ tickets.
3. The Vague Requirement
Acceptance Criteria:
- Should be fast
- UX should be good
- Should work on mobile
Why it fails: Unmeasurable, untestable. Replace with: "Response time < 200ms", "Passes WCAG 2.1 AA", "No horizontal scroll at 320px viewport."
4. The Over-Specified Solution
Title: Use Redis to cache user sessions
Description: Install Redis, configure connection pooling, set TTL to 3600...
Why it fails: Prescribes the solution instead of the problem. Should describe "Session lookups take 500ms, need < 50ms" and let the agent choose the approach.
5. The Missing Files Ticket
Description: Update the auth module to support OAuth.
Why it fails for AI: "The auth module" could be 20 files. Claude Code needs: src/services/auth.ts, src/middleware/auth.ts, src/routes/auth.ts - specific paths.
6. The No-Verification Ticket
Acceptance Criteria:
- OAuth login works
- Users can sign in with Google
Why it fails: No test command, no verification steps. Claude Code performs dramatically better when it can verify its own work.
Good vs Bad Examples
Bad: Vague Feature Ticket
Title: Add rate limiting to the API
Description: We need rate limiting on our endpoints.
Good: Claude Code Ready Feature Ticket
Title: Add sliding window rate limiter to /api/generate endpoint
User Story:
As an API consumer, I want requests to be rate-limited
so that the service remains available under heavy load.
Acceptance Criteria:
AC1: Given an authenticated user making requests,
when they exceed 10 requests per minute,
then return 429 with Retry-After header.
AC2: Given a rate-limited user,
when the window expires,
then requests succeed again.
AC3: Given an unauthenticated request,
when it hits /api/generate,
then return 401 (rate limiting only applies to authed users).
Claude Code Context:
- Pattern: Follow `src/middleware/throttle.ts` for middleware structure
- File: Create `src/middleware/rateLimit.ts`
- Test: Create `tests/middleware/rateLimit.test.ts`
- Route: Modify `src/api/routes/generate.ts` to add middleware
- Constraint: Do NOT modify existing middleware or other endpoints
Verification:
npm test -- --grep "rate-limit"
npm run lint
npm run typecheck
Mapping Tickets to Agent Teams
When using the agent-teams workflow, tickets map directly to the 10-task pipeline:
| Ticket Section | Maps To | Agent |
|---|---|---|
| Title + Description | Task 1: {name}-spec | Feature Agent |
| Acceptance Criteria | Task 3: {name}-tests | Feature Agent (writes tests from AC) |
| Pattern Reference | Task 5: {name}-implement | Feature Agent (follows pattern) |
| Verification section | Task 6-7: verify + validate | Quality Agent + Feature Agent |
| Constraints | Enforced throughout | All agents |
| Claude Code Context | Loaded at start | Feature Agent reads first |
Ticket → Agent Team Flow
1. Create ticket using templates above
2. Ticket becomes the feature spec in _project_specs/features/
3. Team Lead reads spec, creates 10-task dependency chain
4. Feature Agent uses ticket's Claude Code Context to start
5. Quality Agent uses ticket's Acceptance Criteria to verify
6. Review Agent reviews against ticket's Constraints
7. Security Agent scans based on ticket's scope
8. Merger Agent creates PR referencing the ticket ID
Ticket Title Conventions
| Type | Format | Example |
|---|---|---|
| Feature | Add {feature} for {user} | Add episode bookmarking for listeners |
| Enhancement | Improve {what} in {where} | Improve search performance in episode feed |
| Bug | Fix: {Component} - {Symptom} | Fix: PlayerBar - audio stops on tab switch |
| Tech Debt | Refactor: {Area} - {Goal} | Refactor: AuthService - extract token management |
| Security | Security: {What} in {Where} | Security: add input sanitization to comment API |
| Chore | Chore: {What} | Chore: upgrade React from 18 to 19 |
Rules:
- Start with an imperative verb (Add, Fix, Improve, Refactor, Remove)
- Under 80 characters
- Include the component/area affected
- Be specific enough to distinguish from other tickets
Story Points for AI Agents
AI agents estimate differently than humans. Use this calibration:
| Points | Scope | Agent Time | Example |
|---|---|---|---|
| 1 | Single file, < 20 lines changed | ~5 min | Fix a typo, update a config value |
| 2 | 1-2 files, straightforward | ~15 min | Add a field to a form, update an API response |
| 3 | 2-4 files, clear path | ~30 min | New API endpoint following existing pattern |
| 5 | 4-8 files, some decisions | ~1 hour | New feature with tests, models, and routes |
| 8 | 8+ files, complex | ~2 hours | Integration with external service, new data model |
| 13 | Too large, split required | - | Full authentication system, major refactor |
Rule: If > 5 points, consider splitting. If 13, always split.
Integration with Ticket Systems
Jira
- Use custom field "Claude Code Context" for the AI-specific section
- Use labels:
claude-ready,needs-context,ai-blocked - Link tickets with "blocks/blocked by" for dependency chains
Asana
- Use custom fields for Priority, Points, Type
- Use subtasks for the 10-task pipeline steps
- Use tags:
claude-ready,needs-refinement
Linear
- Use issue templates with the Claude Code Context section built-in
- Use labels for ticket type and claude-readiness
- Use projects to group tickets into epics
GitHub Issues
- Use issue templates (
.github/ISSUE_TEMPLATE/) - Use labels:
feature,bug,tech-debt,claude-ready - Use milestones for epics
Command: /create-ticket
When the user asks to create a ticket, follow this workflow:
Step 1: Gather Context
Ask the user:
- What type? (Feature / Bug / Tech Debt)
- Brief description of what needs to be done
- Which part of the codebase is involved?
Step 2: Auto-Detect Context
- Read the relevant files to understand current implementation
- Identify the pattern to follow from existing code
- Find existing tests to understand test conventions
- Check for related files that might be affected
Step 3: Generate Ticket
Use the appropriate template above, filling in:
- All Claude Code Context fields (auto-detected)
- Acceptance criteria (derived from description)
- Verification commands (from project's CLAUDE.md or package.json)
- Constraints (based on codebase analysis)
Step 4: Validate with Checklist
Run the Claude Code Ready Checklist against the generated ticket. Flag any unchecked items for the user to address.
Step 5: Output
Present the ticket in the template format, ready to paste into Jira/Asana/Linear.
Definition of Ready (for Sprint)
A ticket can enter a sprint when:
- Passes INVEST+C criteria
- Claude Code Ready Checklist is complete
- Dependencies are identified and unblocked
- Story points assigned
- Design/mockups attached (if applicable)
- Acceptance criteria reviewed by team
Definition of Done
A ticket is done when:
- All acceptance criteria verified (pass/fail)
- Tests written and passing
- Code reviewed (no Critical/High issues)
- Security scan passed
- Lint and typecheck clean
- Coverage >= 80% for new code
- PR created with full pipeline results
- Documentation updated (if applicable)
FAQ
What does the ticket-craft skill do?
Create Jira/Asana/Linear tickets optimized for Claude Code execution - AI-native ticket writing
How do I install ticket-craft?
Run npx skills add https://github.com/alinaqi/maggy --skill ticket-craft in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/ticket-craft/ (personal) or .claude/skills/ticket-craft/ (project).
Which AI agents can use ticket-craft?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is ticket-craft safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains ticket-craft?
It is published by alinaqi in alinaqi/maggy. It has 276 recorded installs.
More from alinaqi/maggy
pwa-development
alinaqi/maggy
Progressive Web Apps - service workers, caching strategies, offline, Workbox
playwright-testing
alinaqi/maggy
E2E testing with Playwright - Page Objects, cross-browser, CI/CD
android-kotlin
alinaqi/maggy
Android Kotlin development with Coroutines, Jetpack Compose, Hilt, and MockK testing
code-review
alinaqi/maggy
Mandatory code reviews via /code-review before commits and deploys
ui-mobile
alinaqi/maggy
Mobile UI patterns - React Native, iOS/Android, touch targets
posthog-analytics
alinaqi/maggy
PostHog analytics, event tracking, feature flags, dashboards
Popular productivity & automation skills
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
lark-doc
open.feishu.cn
飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。
lark-base
open.feishu.cn
飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。
lark-drive
open.feishu.cn
飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。
lark-shared
open.feishu.cn
Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.
lark-im
open.feishu.cn
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。