Deliver the complete issue lifecycle through the common contract for GitHub, GitLab, and Gitea. An AI agent can create, read, list, comment on, and close an issue with one normalized operation per intent, without provider-specific branching.
Part of [Provider-neutral tracker automation CLI and library](http://gitea.sagacity.ca/steve/skills/issues/16)
## Parent
[Provider-neutral tracker automation CLI and library](http://gitea.sagacity.ca/steve/skills/issues/16)
## What to build
Deliver the complete issue lifecycle through the common contract for GitHub, GitLab, and Gitea. An AI agent can create, read, list, comment on, and close an issue with one normalized operation per intent, without provider-specific branching.
## Acceptance criteria
- [ ] Issue create supports title, body, labels, assignees, and provider repository context.
- [ ] Issue read returns the issue, labels, assignees, and comments in normalized JSON.
- [ ] Issue list supports state and label filters and returns deterministic normalized results.
- [ ] Issue comment and close work across all three providers, including GitLab notes and Gitea close/comment sequencing.
- [ ] GitHub/Gitea shared numbering and GitLab separate numbering are represented without silently resolving a pull request as an issue.
- [ ] Provider-specific command failures become the common structured error contract.
- [ ] Each provider has fake-CLI contract coverage for the complete issue lifecycle.
## Blocked by
- [Bootstrap the tracker runtime and provider selection](http://gitea.sagacity.ca/steve/skills/issues/17)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of Provider-neutral tracker automation CLI and library
Parent
Provider-neutral tracker automation CLI and library
What to build
Deliver the complete issue lifecycle through the common contract for GitHub, GitLab, and Gitea. An AI agent can create, read, list, comment on, and close an issue with one normalized operation per intent, without provider-specific branching.
Acceptance criteria
Blocked by