What Are Issues?
Issues are the second tier in sudocode’s 4-tier abstraction structure. They capture agent intent - the HOW to implement what specs define. Think of issues as actionable work items scoped to what an AI agent (or human developer) can accomplish in a single focused session.Key Principle: Issues capture how to implement. Specs (tier 1) capture what to build. Issues are derived from specs and linked back to the requirements they fulfill.
- Implementation tasks - “Implement login endpoint”
- Bug fixes - “Fix token expiration bug”
- Feature work - “Add password reset flow”
- Epics - “Build authentication system” (contains sub-issues)
- Chores - “Update dependency versions”
Issues vs. Specs
Specs
User intent (WHAT)
- High-level requirements
- Written primarily by humans
- Long-lived, evolve over time
- Multiple issues per spec
Issues
Agent tasks (HOW)
- Actionable implementation
- Created by humans or agents
- Closed when complete
- One spec per issue (typically)
Issue Lifecycle
Issues progress through a well-defined lifecycle from creation to completion:open - Ready to be worked on
open - Ready to be worked on
Issues start as
open when created. An open issue means:- Ready to be claimed by an agent or developer
- No blocking dependencies (or blockers resolved)
- Has sufficient detail to begin work
- May be in the “ready” queue for execution
in_progress - Currently being worked on
in_progress - Currently being worked on
When an agent or developer claims an issue:
- Status changes to
in_progress - Assignee is set to the agent/user
- Other agents know this work is claimed
- Implementation is actively happening
blocked - Waiting on dependencies
blocked - Waiting on dependencies
Issues can become blocked when:
- Another issue must be completed first
- External dependency is unavailable
- Waiting for spec clarification
- Blockers tracked via
blocksrelationships
needs_review - Implementation complete, awaiting review
needs_review - Implementation complete, awaiting review
After implementation is done but before closing:
- Code changes awaiting review
- Testing in progress
- Validation needed
- Feedback being incorporated
closed - Work completed
closed - Work completed
Issues are closed when:
- Implementation is complete
- Tests pass
- Code reviewed and merged
- Requirements fulfilled
- Can be reopened if needed
Issue Types
Issues are categorized by type to help with organization and filtering:| Type | Purpose | Example |
|---|---|---|
| task | Implementation work | ”Create login endpoint” |
| bug | Fix defects | ”Fix token expiration bug” |
| feature | New functionality | ”Add password reset flow” |
| epic | Large work with sub-issues | ”Build authentication system” |
| chore | Maintenance work | ”Update dependencies” |
Issue Structure
Issues are stored as markdown files with YAML frontmatter in.sudocode/issues/:
File Format
Flexible Content: The markdown body is completely flexible. Common sections include Description, Design Notes, Acceptance Criteria, and Implementation Notes, but you can structure it however makes sense.
Cross-References
Issues support bidirectional linking to specs and other issues:Link to Specs
Reference the spec(s) this issue implements:Link to Other Issues
Reference related issues:Automatic Backlinks: sudocode tracks all references automatically, enabling graph-based planning and dependency resolution.
Relationships and Dependencies
Issues can have typed relationships to model dependencies and connections:Relationship Types
| Type | Description | Example |
|---|---|---|
| blocks | Hard blocker dependency | ”ISSUE-001 blocks ISSUE-002” |
| implements | Implements a spec | ”ISSUE-001 implements SPEC-001” |
| parent-child | Epic/subtask hierarchy | ”ISSUE-010 is parent of ISSUE-011” |
| related | Contextual connection | ”ISSUE-001 related to ISSUE-005” |
| discovered-from | Found during implementation | ”ISSUE-020 discovered from ISSUE-015” |
Creating Dependencies
Relationships Documentation
Learn more about relationship types and graph-based planning
Hierarchical Organization
Issues can be organized hierarchically for complex work:- Break epics into manageable tasks
- Organize related work items
- Track progress on large features
- Enable agent handoffs between subtasks
Priority Levels
Issues use a 0-4 priority scale (same as specs):Priority Levels
Priority Levels
- 0 - Critical (highest priority)
- 1 - High
- 2 - Medium (default)
- 3 - Low
- 4 - Lowest
- Execution order - Combined with topological ordering of dependencies
- Ready queue - Higher priority issues surface first
- Agent selection - Agents claim highest priority ready work
Storage and Versioning
Issues are stored in three synchronized layers:Markdown Files (.md)
Markdown Files (.md)
Purpose: Human-editable interface
- Located in
.sudocode/issues/ - YAML frontmatter + markdown body
- Edit directly or via CLI
- Synced to JSONL automatically
JSONL File (issues.jsonl)
JSONL File (issues.jsonl)
Purpose: Source of truth, git-tracked
- One JSON object per line
- Contains all issue data
- Committed to version control
- Used for distribution via git
SQLite Cache (cache.db)
SQLite Cache (cache.db)
Purpose: Fast queries and relationships
- Rebuilt from JSONL after git pull
- Enables efficient graph queries
- Not committed to git
- Auto-synced from JSONL
Git-Native: Issues are version-controlled alongside code. Track work history, see who did what, and understand evolution over time.
Best Practices
When to Create an Issue
✅ Good candidates for issues
✅ Good candidates for issues
- Concrete implementation tasks
- Bug fixes with clear reproduction steps
- Work that can be completed in one session
- Tasks scoped for a single agent or developer
- Subtasks of a larger spec or epic
- Actionable items with clear acceptance criteria
❌ Not good candidates for issues
❌ Not good candidates for issues
- Strategic decisions (create a spec instead)
- Vague ideas without clear implementation path
- Work requiring multiple independent components
- High-level requirements (should be specs)
Writing Effective Issues
Scoping Issues for Agents
Issues should be scoped to what an agent can complete in one focused session:✅ Well-scoped
- “Implement POST /api/auth/login endpoint”
- “Fix token expiration validation bug”
- “Add unit tests for user service”
- “Update API documentation for auth endpoints”
❌ Too broad
- “Build authentication system” (epic, not issue)
- “Improve performance” (too vague)
- “Refactor codebase” (too large)
- “Add features” (not specific)
CLI Commands
Quick reference for working with issues:Complete CLI Reference
See full documentation for all issue commands and options
Agent Workflows
Claiming and Executing Work
Agents use issues to coordinate work:Handling Blocked Work
When an issue is blocked:Common Workflows
Creating Issues from a Spec
Converting a Bug Report to an Issue
Add reproduction steps
Edit
.sudocode/issues/ISSUE-001.md to add:- Steps to reproduce
- Expected behavior
- Actual behavior
- System information
Next Steps
Specs
Learn about specs - the high-level requirements issues implement
Relationships
Understand how to model dependencies and connections
Feedback System
See how to provide feedback on specs from issues
Issue Commands
Complete CLI reference for managing issues

