AgentSkillsCN

create-issue

以合理的结构与阻断关系创建 Linear 问题。当您需要新建任务、拆解工作内容,或为各问题之间建立依赖关系时,可使用此工具。

SKILL.md
--- frontmatter
name: create-issue
description: Create a Linear issue with proper structure and blocking relationships. Use when creating new tasks, breaking down work, or setting up dependencies between issues.

Creating Linear Issues

Follow this workflow when creating issues in Linear:

Required Fields

Every issue must have:

FieldValue
TeamBT
Assigneejamesc.000@gmail.com (James Casey)
Agent State Labelagent-ready or needs-spec
Item Area LabelComponent affected (see below)
Estimate (Size)T-shirt size: S, M, L, XL
TypeSee issue types below

Issue Types

TypeDescription
EpicLarge initiatives that group 5+ related issues (use size XL)
FeatureA chunk of customer visible work
BugBugs, broken tests, broken code
ImprovementIncremental work on top of a feature
DocumentationWords that explain things to humans and non-humans
InfraTools, CI, dev environment configuration
Language FeatureNew Beamtalk language syntax/semantics
RefactorCode cleanups, tech debt
ResearchResearch projects, code spikes
SamplesCode, examples, things to help devs get started

Note: Use Epic type only for large initiatives. Epic titles should use Epic: prefix (e.g., "Epic: Feature Name"). See AGENTS.md "Epics" section for full guidelines.

Item Area Labels

Every issue should have an area label to identify which component is affected:

AreaDescriptionKey Directories
class-systemClass definition, parsing, codegen, and runtimecrates/beamtalk-core/src/ast.rs, crates/beamtalk-core/src/parse/
stdlibStandard library: collections, primitives, stringslib/
replREPL backend and CLI interactionruntime/src/beamtalk_repl.erl, crates/beamtalk-cli/src/repl/
cliCommand-line interface and build toolingcrates/beamtalk-cli/
codegenCode generation to Core Erlang/BEAMcrates/beamtalk-core/src/erlang.rs
runtimeErlang runtime: actors, futures, OTP integrationruntime/src/
parserLexer, parser, ASTcrates/beamtalk-core/src/parse/, crates/beamtalk-core/src/ast.rs

Optional Fields

FieldWhen to Use
ProjectIf part of a larger initiative (e.g., "Stdlib Implementation")
Priority1 (Urgent), 2 (High), 3 (Medium), 4 (Low) - default is 3
Parent IssueIf this is a sub-task of a larger issue

Issue Body Structure

Every issue description should include:

  1. Context - Why this work matters, background info
  2. Acceptance Criteria - Specific, testable requirements (checkboxes)
  3. Files to Modify - Explicit paths to relevant files
  4. Dependencies - Other issues that must complete first
  5. References - Links to specs, examples, or related code

Example Issue

markdown
Title: Implement basic lexer token types

Context:
The lexer is the first phase of compilation. It needs to tokenize
Smalltalk-style message syntax including identifiers, numbers, and keywords.

Acceptance Criteria:
- [ ] Tokenize identifiers (letters, digits, underscores)
- [ ] Tokenize integers and floats
- [ ] Tokenize single and double quoted strings
- [ ] Tokenize message keywords ending in `:`
- [ ] Tokenize block delimiters `[` `]`
- [ ] All tokens include source span

Files to Modify:
- crates/beamtalk-core/src/parse/token.rs
- crates/beamtalk-core/src/parse/lexer.rs

Dependencies: None

References:
- See Gleam lexer: github.com/gleam-lang/gleam/blob/main/compiler-core/src/parse/lexer.rs

Agent-State Labels

Always set one of these labels:

  • agent-ready - Fully specified, all acceptance criteria clear, agent can start immediately
  • needs-spec - Requires human clarification before work can start
  • blocked - Waiting on external dependency or another issue

Size Estimates (T-Shirt Sizing)

SizeDescription
SSmall change, few hours (add a test, simple refactor)
MMedium change, ~1 day (new feature, moderate complexity)
LLarge change, 2-3 days (significant feature, multiple files)
XLExtra large, consider breaking down (major feature, architectural change)

Creating via Linear Tool

json
{
  "action": "create",
  "title": "Implement feature X",
  "team": "BT",
  "assignee": "jamesc.000@gmail.com",
  "body": "Context:\n...\n\nAcceptance Criteria:\n- [ ] ...",
  "labels": ["agent-ready", "Language Feature", "parser"],
  "priority": 3
}

Labels should include:

  • One Agent State label: agent-ready, needs-spec, or blocked
  • One Issue Type label: Feature, Bug, Improvement, etc.
  • One Item Area label: parser, codegen, stdlib, repl, cli, runtime, or class-system

After creation, use GraphQL to set estimate and project:

json
{
  "action": "graphql",
  "graphql": "mutation { issueUpdate(id: \"<issue-id>\", input: { estimate: 3 }) { success } }"
}

Creating Blocking Relationships

When issues have dependencies, always set up Linear's "blocks" relationships:

json
{
  "action": "graphql",
  "graphql": "mutation { issueRelationCreate(input: { issueId: \"<blocker-id>\", relatedIssueId: \"<blocked-id>\", type: blocks }) { success } }"
}

Rules

  • Always assign to jamesc.000@gmail.com - all issues go to James Casey
  • If issue A must be completed before issue B can start, then A "blocks" B
  • Always create blocking relationships when dependencies are mentioned
  • Set estimate based on complexity, not time
  • Add to relevant project if one exists for the work area