Skip to content

Commit 6fafc59

Browse files
committed
chore: add issue tracker as extension
1 parent e66b986 commit 6fafc59

File tree

5 files changed

+3799
-0
lines changed

5 files changed

+3799
-0
lines changed

roadmap.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -780,6 +780,56 @@ Consolidates: Command-level model selection + context budgeting + two-model revi
780780

781781
### **Future Enhancement Categories**
782782

783+
### **Issue Tracker Extension Refactor** *(0% Complete)* - **MEDIUM PRIORITY** - Modular MCP integration architecture
784+
785+
**Context**: The `--issue-tracker` CLI argument is currently hardcoded in `src/specify_cli/__init__.py` with the `ISSUE_TRACKER_CONFIG` dict. This should be refactored to use the extension system for better modularity and maintainability.
786+
787+
**Current State**:
788+
- `ISSUE_TRACKER_CONFIG` dict (lines 241-267): Hardcoded config for github, jira, linear, gitlab
789+
- `--issue-tracker` CLI argument in `init` command
790+
- `configure_issue_tracker_mcp_servers()` function configures MCP servers in agent settings
791+
792+
**Proposed Architecture**:
793+
- Each issue tracker becomes a standalone extension with `extension.yml` containing MCP server configuration
794+
- Add `mcp_servers` section to extension manifest schema
795+
- Create `MCPServerRegistrar` class in `extensions.py` for MCP configuration
796+
- Extensions stored in `.specify/extensions/{tracker-name}/`
797+
798+
**Implementation Phases**:
799+
800+
1. **Phase 1: Extend Extension System**
801+
- ❌ Update `ExtensionManifest` to parse `mcp_servers` section in `extension.yml`
802+
- ❌ Create `MCPServerRegistrar` class to configure MCP servers in agent settings files
803+
- ❌ Update `ExtensionManager.install_from_directory()` to call MCP registration
804+
805+
2. **Phase 2: Create Issue Tracker Extensions**
806+
- ❌ Create extension packages for github-issues, jira, linear, gitlab-issues
807+
- ❌ Each extension includes: `extension.yml`, config template, optional sync commands
808+
- ❌ Add extensions to catalog or include as built-in
809+
810+
3. **Phase 3: CLI Refactor**
811+
- ❌ Remove `ISSUE_TRACKER_CONFIG` dict and `configure_issue_tracker_mcp_servers()` function
812+
- ❌ Remove `--issue-tracker` argument from `init` command
813+
- ❌ Add `--with-extension` flag for installing extensions during init (optional)
814+
- ❌ Update help text and documentation
815+
816+
**Benefits**:
817+
- Modularity: Issue trackers are independent, installable units
818+
- Extensibility: Users can create custom issue tracker extensions
819+
- Configuration: Layered config system with env var overrides via `ConfigManager`
820+
- Maintainability: Each tracker is self-contained
821+
- Discoverability: Extensions appear in catalog searches
822+
- Versioning: Each tracker can be versioned independently
823+
824+
**Files to Modify**:
825+
- `src/specify_cli/extensions.py` - Add MCP server support
826+
- `src/specify_cli/__init__.py` - Remove hardcoded config, update init command
827+
- `extensions/catalog.json` - Add issue tracker extensions
828+
829+
**Estimated Effort**: ~5-7 days
830+
831+
---
832+
783833
### **Compound Engineering Integration** *(0% Complete)* - **MEDIUM PRIORITY** - Insights from EveryInc's Compound Engineering Plugin
784834

785835
**Reference**: Analysis of [EveryInc/compound-engineering-plugin](https://github.com/EveryInc/compound-engineering-plugin) (7.5k stars, 598 forks)

0 commit comments

Comments
 (0)