feat(008): inline markdown checklists for Linear and JIRA#1140
Merged
zbigniewsobiecki merged 6 commits intodevfrom Apr 18, 2026
Merged
feat(008): inline markdown checklists for Linear and JIRA#1140zbigniewsobiecki merged 6 commits intodevfrom
zbigniewsobiecki merged 6 commits intodevfrom
Conversation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pure string transformer for reading, writing, and mutating inline markdown checklists within issue descriptions. Supports parsing, appending, adding items, toggling checked state, removing items, and stable content-hash IDs. Dormant — no adapter wiring yet (plan 2). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replaces sub-issue/subtask checklist implementation with inline markdown checkboxes appended to the parent issue's description. Linear writes plain markdown; JIRA round-trips through ADF. Both adapters use the shared engine from plan 1. PMProvider interface unchanged. Read-modify-write with one retry on conflict. Trello unchanged (uses native checklists). Closes spec 008. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Untrack .claude/scheduled_tasks.lock (committed by accident); add to gitignore. Refactor parseInlineChecklists to extract state-handling helper, removing the cognitive complexity warning. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Linear and JIRA checklists (acceptance criteria, implementation steps, dependency lists) are now stored as inline markdown checkboxes in the parent issue's description, instead of full sub-issues / subtasks. Trello continues to use its native checklist API.
The problem: A splitting agent that broke a feature into 5 stories with 6 acceptance criteria each was creating 30 orphan issues in the Linear/JIRA workspace — each with its own identifier, state, project assignment, and lifecycle. These cluttered boards, polluted search, inflated backlog counts, and confused users seeing dozens of "Tests verify…" items as top-level work.
The fix: For providers without native checklists, append
### {Checklist Name}markdown sections to the parent description, with- [ ]/- [x]items underneath. Both Linear and JIRA render these as interactive checkboxes natively. The PMProvider interface is unchanged — only adapter internals.Spec 008 | Plans 1 2
Architecture
src/pm/_shared/inline-checklist.ts): pure string transformer with parse / append / addItem / toggle / remove / hash. ~280 LOC, 28 tests, zero external dependencies.descriptionfield as plain markdown.descriptionvia ADF round-trip (adfToPlainText→ mutate →markdownToAdf). Extended ADF converter to handletaskList/taskItemnodes.cl-a1b2c3d4) — stable as long as item text doesn't change.Files changed
src/pm/_shared/inline-checklist.ts(new)src/pm/linear/adapter.ts(5 checklist methods rewritten)src/pm/jira/adapter.ts(5 checklist methods rewritten, removedgetSubtaskTypeName)src/pm/jira/adf.ts(addedtaskList/taskItemcases)src/integrations/README.md(new "Checklist implementation by provider" section),CHANGELOG.md.gitignore(lock file), parser refactor to remove lint warningTest plan
taskList/taskItem→ markdown conversionMigration
Forward-only. Existing sub-issues / subtasks created before this change are not migrated — they remain as-is. New checklists use the inline format.
🤖 Generated with Claude Code