ALWAYS use this skill for ALL sudocode spec and issue operations...
Spec-driven development and issue management system. Work persists across sessions, specs guide implementation, dependency graphs ensure correct execution order, feedback loops close requirements gaps.
.sudocode/specs/) - user-initiated, capture intent.sudocode/issues/) - agent work, actionable tasksCreate issues when: Concrete actionable work, can be completed and closed, implements a spec, is a bug/task Create specs when: Documenting user intent and requirements, architecture decisions, API designs, feature specifications
Option 1: Direct Markdown Editing (For content-heavy edits)
.sudocode/specs/ or .sudocode/issues/Option 2: MCP Tools (Recommended for structured operations)
upsert_issue, upsert_spec, link, add_feedback toolsWhen to use each:
Link specs and issues inline using [[ID]] syntax:
Basic reference:
Implement OAuth per [[s-8h2k]]
With display text:
See [[s-8h2k|authentication spec]] for details
With relationship type:
Must complete [[i-7x9m]]{ blocks } first
Formats supported:
- [[s-14sh]] - basic reference (creates "references" relationship)
- [[i-x7k9]] or [[@i-x7k9]] - with @ prefix
- [[s-3s542|Custom Text]] - with display text
- [[s-x4d6df]]{ blocks } - declares relationship type
- [[s-24gfs3|Text]]{ blocks } - both display and relationship
Relationship types in mentions: blocks, implements, depends-on, discovered-from
Why use inline mentions:
link tool call- [ ] Use ready tool to find unblocked work
- [ ] Use list_issues with status=in_progress to see current work
- [ ] Ask user which work to pursue (if not specified)
If you were assigned an issue, work ONLY on implementing the requirements of the issue.
ready ā Find unblocked work
show_issue/show_spec ā Get details with relationships
upsert_issue/spec ā Create/update (status, priority, parent)
link ā Create relationships (blocks, implements, parent-child)
add_feedback ā Document implementation results on specs
| Type | Purpose | Effect on ready |
|---|---|---|
implements |
Issue ā Spec connection | None (documentation) |
blocks |
Execution ordering | Blocked issue not ready until blocker closes |
parent-child |
Hierarchical organization | None (hierarchy only) |
discovered-from |
Provenance tracking | None (documentation) |
Standard flow:
open ā in_progress ā closed
ā ā ā
āāāāāāāāāāā“āāāāāāāāāāāāā
blocked (when waiting on dependencies)
When requirements are not fully met or unforeseen issues arise during execution:
in_progress ā needs_review ā closed
Hierarchical specs: Multiple subsystems, multiple layers, natural abstraction levels Hierarchical issues: Epic with subtasks, clear dependencies, progress tracking at different granularity
Example: "Implement authentication system"
Create hierarchy:
s-2a7c: Auth System (parent)
āāā s-8h2k: OAuth (child)
āāā s-9j3m: Sessions (child)
āāā s-4k8p: Permissions (child)
i-5n7q: Implement auth (parent epic, implements s-2a7c)
āāā i-7x9m: OAuth flow (child, implements s-8h2k)
āāā i-3p6k: Session storage (child, implements s-9j3m)
āāā i-8w2n: Permissions (child, implements s-4k8p)
Add execution order:
link: i-7x9m blocks i-3p6k (OAuth before sessions)
link: i-3p6k blocks i-8w2n (sessions before permissions)
Result: ready shows i-7x9m ā close it ā ready shows i-3p6k ā etc.
Use blocks for: Execution ordering (A must finish before B starts)
Use parent-child for: Hierarchical organization (tracking progress at multiple levels)
Use both: Parent-child for hierarchy + blocks for ordering
- [ ] Identify foundation work (must happen first)
- [ ] Identify parallel work (no dependencies)
- [ ] Create all issues first (don't worry about order)
- [ ] Add parent-child for hierarchy
- [ ] Add blocks for execution order
- [ ] Verify no circular dependencies
- [ ] Use ready to verify graph correct
Pattern: Foundation blocks everything else ā parallel work in middle ā validation at end
Always provide feedback when implementing specs.
- [ ] Update issue status
- [ ] Use add_feedback on spec with requirements met, design decisions, challenges, evidence
- [ ] Choose type: comment (informational), suggestion (spec update), request (clarification)
- [ ] Anchor feedback to relevant spec sections
Good feedback:
ā
Requirements met: OAuth flow working per spec
š Design decisions: Used Redis for tokens (horizontal scaling), added rate limiting
ā ļø Challenges: PKCE needed for mobile (not in spec), token refresh race condition solved with 10s buffer
ā
Evidence: 47 tests passing, 3 OAuth providers tested, security scan clean
š” Suggestions: Add mobile requirements, document token refresh edge case
Bad feedback: "Implemented the feature. It works."
Close (status=closed) when:
Set needs_review when:
Self-check: "Could another developer deploy this to production as-is?"
- [ ] All requirements met
- [ ] Tests passing
- [ ] No blocking questions
- [ ] Implementation sound or uncertainties flagged
- [ ] Evidence provided
- [ ] Feedback on spec documenting what was done
If any item is ā, set needs_review with feedback explaining gaps/questions
Spec-driven feature: Create spec ā Create issues that implement spec ā Add blocks dependencies to establish execution order ā Use ready to find next work ā Provide feedback on spec when done
Bug discovery: Create issue for discovered work ā Link with discovered-from ā If blocker: add blocks relationship + set original to blocked
Complex hierarchical feature: Create parent spec + child specs ā Create parent issue + child issues ā Link issues to specs with implements ā Add parent-child + blocks relationships ā Use ready to execute in order ā Provide feedback on each spec
Use TodoWrite for: Session-scoped checklists, immediate execution tracking Use Issues for: Multi-session work, dependencies, spec implementation
Pattern: Start session with ready ā Create TodoWrite for immediate tasks ā Update issue status as you work ā Close issue when complete