@softspark/jira-mcp 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,23 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v1.3.0 -- File-Backed Templates & Approval Hooks (2026-04-15)
11
+
12
+ ### Added
13
+ - **File-backed template catalog** -- ship built-in comment and single-task templates as physical markdown files under `templates-system/`.
14
+ - **Template management CLI** -- add `jira-mcp template add/list/show/remove` for global user overrides in `~/.softspark/jira-mcp/templates/`.
15
+ - **Task templates for `create_task`** -- add `list_task_templates` and template-based issue creation with variable rendering.
16
+ - **Comment approval hook manifest** -- ship `hooks/jira-mcp-hooks.json` for ai-toolkit `inject-hook` flows that preview and gate Jira comment writes.
17
+
18
+ ### Changed
19
+ - **Template loading model** -- resolve active templates from system files plus global user overrides, with user files winning on `id` collisions.
20
+ - **Configuration init** -- create dedicated template directories for comments, single-task templates, and bulk task configs.
21
+ - **README validation** -- exclude internal tool helpers from MCP tool counts and refresh counts to match the current source tree.
22
+
23
+ ### Fixed
24
+ - **Comment write safety** -- require explicit `user_approved=true` before `add_task_comment` and `add_templated_comment` can mutate Jira.
25
+ - **Comment preview flow** -- render templated comment previews before execution so approval can target the exact outgoing markdown.
26
+
10
27
  ## v1.2.0 -- Per-Instance Credentials & Jira API Migration (2026-04-14)
11
28
 
12
29
  ### Added
package/README.md CHANGED
@@ -4,17 +4,18 @@
4
4
 
5
5
  [![CI](https://github.com/softspark/jira-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/softspark/jira-mcp/actions/workflows/ci.yml)
6
6
  [![npm](https://img.shields.io/npm/v/@softspark/jira-mcp)](https://www.npmjs.com/package/@softspark/jira-mcp)
7
- [![version](https://img.shields.io/badge/version-1.1.0-blue)](CHANGELOG.md)
7
+ [![version](https://img.shields.io/badge/version-1.3.0-blue)](CHANGELOG.md)
8
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
9
9
 
10
10
  ---
11
11
 
12
- ## What's New in v1.2.0
12
+ ## What's New in v1.3.0
13
13
 
14
- - **Per-instance credentials** -- `set-credentials --url` allows different API tokens per Jira instance. Auto-migrates legacy format.
15
- - **Jira Cloud API migration** -- search endpoint updated to `/rest/api/3/search/jql` (old endpoint returns 410).
16
- - **Live Jira smoke tests** -- post-release SOP tests all 15 MCP tools against a sandbox project.
17
- - **518 tests** across 52 test files.
14
+ - **File-backed templates** -- built-in comment and task templates now live as physical markdown files and support global user overrides.
15
+ - **Template CLI + `create_task` templates** -- add install/list/show/remove flows and first-class task template rendering.
16
+ - **Comment approval hooks** -- ship a repo-owned ai-toolkit hook manifest that previews Jira comments before the write executes.
17
+ - **Runtime approval enforcement** -- block comment mutations unless the retry includes `user_approved=true`.
18
+ - **541 tests** across 56 test files.
18
19
 
19
20
  See [CHANGELOG.md](CHANGELOG.md) for full details.
20
21
 
@@ -74,6 +75,10 @@ All configuration lives in `~/.softspark/jira-mcp/` (created by `jira-mcp config
74
75
  | `jira-mcp serve` | Start MCP server (explicit) |
75
76
  | `jira-mcp create <path>` | Create tasks from config file (dry-run by default) |
76
77
  | `jira-mcp create-monthly` | Create monthly admin tasks from built-in templates |
78
+ | `jira-mcp template add <type> <path>` | Install a template override from a local markdown file |
79
+ | `jira-mcp template list [type]` | List active comment/task templates |
80
+ | `jira-mcp template show <type> <id>` | Show the active template file content |
81
+ | `jira-mcp template remove <type> <id>` | Remove a user-installed template override |
77
82
  | `jira-mcp config init` | Initialize global config at `~/.softspark/jira-mcp/` |
78
83
  | `jira-mcp config add-project <key> <url>` | Add a Jira project to config |
79
84
  | `jira-mcp config remove-project <key>` | Remove a project from config |
@@ -95,7 +100,7 @@ All configuration lives in `~/.softspark/jira-mcp/` (created by `jira-mcp config
95
100
  | `read_cached_tasks` | Read tasks from cache without hitting Jira | `task_key?` |
96
101
  | `update_task_status` | Change task status via workflow transition | `task_key`, `status` |
97
102
  | `update_task` | Update existing issue fields (markdown → ADF) | `task_key`, `summary?`, `description?`, `priority?`, `labels?` |
98
- | `add_task_comment` | Add a markdown comment (auto-converted to ADF) | `task_key`, `comment` |
103
+ | `add_task_comment` | Add a markdown comment (auto-converted to ADF) | `task_key`, `comment`, `user_approved` |
99
104
  | `reassign_task` | Reassign or unassign a task | `task_key`, `assignee_email?` |
100
105
  | `get_task_statuses` | Get valid workflow transitions for a task | `task_key` |
101
106
  | `get_task_details` | Get full details with description, comments, and language | `task_key` |
@@ -103,8 +108,9 @@ All configuration lives in `~/.softspark/jira-mcp/` (created by `jira-mcp config
103
108
  | `log_task_time` | Log work time (`"2h 30m"` format, no days) | `task_key`, `time_spent`, `comment?` |
104
109
  | `get_task_time_tracking` | Get time tracking info (estimate, spent, remaining) | `task_key` |
105
110
  | `list_comment_templates` | List available comment templates | `category?` |
106
- | `add_templated_comment` | Add comment using a template or raw markdown | `task_key`, `template_id?`, `variables?`, `markdown?` |
107
- | `create_task` | Create a new Jira issue with ADF description | `project_key`, `summary`, `description?`, `assignee_email?`, `labels?`, `epic_key?` |
111
+ | `list_task_templates` | List available task templates for `create_task` | |
112
+ | `add_templated_comment` | Add comment using a template or raw markdown | `task_key`, `template_id?`, `variables?`, `markdown?`, `user_approved` |
113
+ | `create_task` | Create a new Jira issue with explicit fields or a task template | `project_key`, `summary?`, `template_id?`, `variables?`, `description?`, `assignee_email?`, `labels?`, `epic_key?` |
108
114
  | `search_tasks` | Search Jira issues with JQL (no caching) | `jql`, `max_results?`, `project_key?` |
109
115
 
110
116
  ## Comment Templates
@@ -130,6 +136,23 @@ Example with Claude Code:
130
136
 
131
137
  The AI will use `add_templated_comment` with `template_id: "status-update"` automatically.
132
138
 
139
+ ### File-Backed Overrides
140
+
141
+ System templates are shipped as markdown files. User overrides are loaded from:
142
+
143
+ ```text
144
+ ~/.softspark/jira-mcp/templates/comments/
145
+ ~/.softspark/jira-mcp/templates/task-templates/
146
+ ```
147
+
148
+ If a user file has the same `id` as a system template, the user file wins globally for all projects.
149
+
150
+ ```bash
151
+ jira-mcp template add comment ./my-status-update.md
152
+ jira-mcp template add task ./my-bug-task.md
153
+ jira-mcp template list
154
+ ```
155
+
133
156
  ## Usage with Claude Code
134
157
 
135
158
  Add to your Claude Code MCP configuration (`~/.claude/claude_desktop_config.json` or project-level):
@@ -160,7 +183,19 @@ Or copy `rules/jira-mcp.md` to your ai-toolkit rules directory manually. The rul
160
183
  - **Sync before read** -- cache may be stale
161
184
  - **Status transitions** -- check valid transitions before changing status
162
185
  - **Time format** -- `"2h 30m"`, never days
163
- - **All 15 MCP tools** and **16 CLI commands** reference
186
+ - **All 16 MCP tools** and **20 CLI commands** reference
187
+
188
+ ### AI Toolkit Hooks
189
+
190
+ To require explicit user approval before Jira comment writes, inject the repo-owned hook manifest:
191
+
192
+ ```bash
193
+ ai-toolkit inject-hook https://raw.githubusercontent.com/softspark/jira-mcp/main/hooks/jira-mcp-hooks.json
194
+ ```
195
+
196
+ This installs a `PreToolUse` guard for `add_task_comment` and `add_templated_comment`. The hook blocks the tool call, shows the exact comment preview, and tells the agent to retry only after the user approves it with `user_approved=true`.
197
+
198
+ The MCP server still enforces `user_approved=true` at runtime, so the hook is UX guidance plus an extra safety layer rather than the only check.
164
199
 
165
200
  ## Usage with Other MCP Clients
166
201
 
@@ -187,14 +222,15 @@ src/
187
222
  commands/
188
223
  cache/ Cache management subcommands
189
224
  config/ Config management subcommands
225
+ template/ File-backed template management subcommands
190
226
  create.ts Bulk task creation command
191
227
  create-monthly.ts Monthly admin task automation
192
228
  config/ Configuration loading and Zod validation
193
229
  connector/ Jira API client (built-in fetch, instance pool)
194
230
  errors/ Typed error hierarchy
195
231
  operations/ Business logic (status, comments, time tracking)
196
- templates/ Comment template system (registry + built-in templates)
197
- tools/ MCP tool handlers (15 tools, one file per tool)
232
+ templates/ File-backed comment/task template loading and registries
233
+ tools/ MCP tool handlers (16 tools, one file per tool)
198
234
  types/ Shared TypeScript types
199
235
  server.ts MCP server setup and tool registration
200
236
  cli.ts CLI entry point
@@ -208,7 +244,7 @@ src/
208
244
 
209
245
  **Local caching** -- tasks synced to `~/.softspark/jira-mcp/cache/` with atomic writes (tmp + rename). Work offline with `read_cached_tasks`, sync on demand. Workflow and user caches for status validation and assignee resolution.
210
246
 
211
- **Comment templates** -- 8 built-in templates with `{{variable}}` interpolation and `{{#var}}...{{/var}}` conditional blocks. Status updates, blockers, handoffs, reviews. See [Templates Reference](kb/reference/templates.md).
247
+ **File-backed templates** -- 8 built-in comment templates and built-in task templates are stored as markdown files, with global user overrides loaded from `~/.softspark/jira-mcp/templates/`. Both support `{{variable}}` interpolation and `{{#var}}...{{/var}}` conditional blocks. See [Templates Reference](kb/reference/templates.md).
212
248
 
213
249
  **Language configuration** -- global `default_language` with per-project override. Supports: pl, en, de, es, fr, pt, it, nl. `get_project_language` tool and `language` field in `get_task_details` let AI assistants write content in the correct language. See [Configuration](kb/reference/configuration.md).
214
250
 
@@ -218,16 +254,16 @@ src/
218
254
 
219
255
  **Supply chain protection** -- `ignore-scripts=true`, no axios, no dynamic requires. Self-contained 520KB bundle, 1 runtime dep (commander).
220
256
 
221
- **Typed error hierarchy** -- 15 error classes with machine-readable codes. Every tool returns structured `{ success, error, code }` responses. No stack traces leak to MCP clients.
257
+ **Typed error hierarchy** -- 17 error classes with machine-readable codes. Every tool returns structured `{ success, error, code }` responses. No stack traces leak to MCP clients.
222
258
 
223
- **Strict TypeScript** -- `strict: true`, no `any`, `readonly` interfaces, Zod validation at all boundaries, 518 tests across 52 test files. Self-contained 520KB package.
259
+ **Strict TypeScript** -- `strict: true`, no `any`, `readonly` interfaces, Zod validation at all boundaries, 541 tests across 56 test files. Self-contained 520KB package.
224
260
 
225
261
  ## Documentation
226
262
 
227
263
  | Document | Description |
228
264
  |----------|-------------|
229
265
  | [Architecture](kb/reference/architecture.md) | System design and module overview |
230
- | [API Reference](kb/reference/api.md) | All 15 MCP tools with schemas |
266
+ | [API Reference](kb/reference/api.md) | All 16 MCP tools with schemas |
231
267
  | [Configuration](kb/reference/configuration.md) | Config files, env vars, multi-instance |
232
268
  | [ADF Format](kb/reference/adf.md) | Atlassian Document Format conversion |
233
269
  | [Caching](kb/reference/caching.md) | Task, workflow, and user caching |