Symptoms
The before-implement hooks step for EAC-2781 (context file
/Users/joe.davis/vscode/.dev-team/jouzen/ent-inventory-api/EAC-2781.md) failed. The
dev-team:hook-runner agent was dispatched with instructions ["Set Jira work item status to \"In Progress\"", "Set \"Assignee\" to myself"] and reported it could not execute either Jira
operation.
The agent invoked work-with-Jira-tasks (plugins/dev-team/skills/work-with-Jira-tasks/SKILL.md)
several times with different argument shapes and only ever got the skill's own documentation
back, never an executed Jira operation. Root cause: work-with-Jira-tasks's primary discovery
path calls ToolSearch(query="<operation-suffix>") to load a matched MCP tool's schema before
it can be invoked, with a documented GetMcpTools/CallMcpTool fallback for environments where
ToolSearch doesn't surface individually-named tools. Neither ToolSearch nor
GetMcpTools/CallMcpTool appears in plugins/dev-team/agents/hook-runner.md's tools: list —
only Read, Bash, Skill, and the mcp__jira__* / mcp__plugin-atlassian-atlassian__* /
mcp__claude_ai_atlassian-* / mcp__plugin_github_github__* wildcard grants.
In this occurrence, the connected Atlassian MCP server (mcp__claude_ai_atlassian-ouraring__*)
exposes its Jira operations as deferred tools — the runtime requires a ToolSearch call to load
a deferred tool's schema before it becomes callable, even though the wildcard grant in
hook-runner.md already covers the tool's name. Without ToolSearch (or the GetMcpTools/
CallMcpTool fallback) in its own tool list, hook-runner has no way to ever invoke a deferred
Jira MCP tool, regardless of what its wildcard grants otherwise permit — so every Jira operation
dispatched through work-with-Jira-tasks from hook-runner fails in this class of environment.
This surfaced through workflow-orchestrate's "any non-successful hook result runs the
troubleshooter" rule (plugins/dev-team/skills/workflow-orchestrate/SKILL.md), even though
dev_team.py's own hook-phase handling (_do_get_actions_and_exit, dev_team.py:1171-1264)
already tolerates a failed hook and advances hook_phase from before to main on the very
next invocation regardless of outcome — this before-implement hook is Jira bookkeeping only
(status transition + assignee) and does not block EAC-2781's actual implementation.
Workaround
None applied to the pipeline mechanics — no context-file edit was needed. dev_team.py already
advances past a failed before-hook on its next invocation (moving hook_phase from before to
main, then dispatching the step's own main action), so the fix here is simply to let the
pipeline continue past this hook failure rather than block on it: return continue to the
orchestrator without retrying the Jira operations. EAC-2781's Jira status/assignee will not
reflect "In Progress"/self-assigned until this is fixed or done manually.
A real fix would add ToolSearch (and, per work-with-Jira-tasks's documented fallback,
GetMcpTools/CallMcpTool) to hook-runner.md's tools: list, matching what
work-with-Jira-tasks's discovery procedure actually requires. Not attempted in this occurrence
at the user's direction (skip Jira bookkeeping, continue implementation) and because
troubleshooter.can-fix/can-push-fix are unset in this project's merged configuration.
Written by dev-team troubleshooter agent
Symptoms
The
before-implementhooksstep for EAC-2781 (context file/Users/joe.davis/vscode/.dev-team/jouzen/ent-inventory-api/EAC-2781.md) failed. Thedev-team:hook-runneragent was dispatched with instructions["Set Jira work item status to \"In Progress\"", "Set \"Assignee\" to myself"]and reported it could not execute either Jiraoperation.
The agent invoked
work-with-Jira-tasks(plugins/dev-team/skills/work-with-Jira-tasks/SKILL.md)several times with different argument shapes and only ever got the skill's own documentation
back, never an executed Jira operation. Root cause:
work-with-Jira-tasks's primary discoverypath calls
ToolSearch(query="<operation-suffix>")to load a matched MCP tool's schema beforeit can be invoked, with a documented
GetMcpTools/CallMcpToolfallback for environments whereToolSearchdoesn't surface individually-named tools. NeitherToolSearchnorGetMcpTools/CallMcpToolappears inplugins/dev-team/agents/hook-runner.md'stools:list —only
Read,Bash,Skill, and themcp__jira__*/mcp__plugin-atlassian-atlassian__*/mcp__claude_ai_atlassian-*/mcp__plugin_github_github__*wildcard grants.In this occurrence, the connected Atlassian MCP server (
mcp__claude_ai_atlassian-ouraring__*)exposes its Jira operations as deferred tools — the runtime requires a
ToolSearchcall to loada deferred tool's schema before it becomes callable, even though the wildcard grant in
hook-runner.mdalready covers the tool's name. WithoutToolSearch(or theGetMcpTools/CallMcpToolfallback) in its own tool list,hook-runnerhas no way to ever invoke a deferredJira MCP tool, regardless of what its wildcard grants otherwise permit — so every Jira operation
dispatched through
work-with-Jira-tasksfromhook-runnerfails in this class of environment.This surfaced through
workflow-orchestrate's "any non-successfulhook result runs thetroubleshooter" rule (
plugins/dev-team/skills/workflow-orchestrate/SKILL.md), even thoughdev_team.py's own hook-phase handling (_do_get_actions_and_exit,dev_team.py:1171-1264)already tolerates a failed hook and advances
hook_phasefrombeforetomainon the verynext invocation regardless of outcome — this before-implement hook is Jira bookkeeping only
(status transition + assignee) and does not block EAC-2781's actual implementation.
Workaround
None applied to the pipeline mechanics — no context-file edit was needed.
dev_team.pyalreadyadvances past a failed before-hook on its next invocation (moving
hook_phasefrombeforetomain, then dispatching the step's own main action), so the fix here is simply to let thepipeline continue past this hook failure rather than block on it: return
continueto theorchestrator without retrying the Jira operations. EAC-2781's Jira status/assignee will not
reflect "In Progress"/self-assigned until this is fixed or done manually.
A real fix would add
ToolSearch(and, perwork-with-Jira-tasks's documented fallback,GetMcpTools/CallMcpTool) tohook-runner.md'stools:list, matching whatwork-with-Jira-tasks's discovery procedure actually requires. Not attempted in this occurrenceat the user's direction (skip Jira bookkeeping, continue implementation) and because
troubleshooter.can-fix/can-push-fixare unset in this project's merged configuration.Written by dev-team troubleshooter agent