Install git hooks that auto-prefix commit messages with the active GSD phase/plan Jira issue key for full code <-> Jira traceability
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-gsd-jira-plugin:jira-install-git-hooks [target-repo-path] | --all | --uninstall | --strict[target-repo-path] | --all | --uninstall | --strictThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<objective>
Installation is per-repo: the hooks are shell shims written into ${TARGET}/.git/hooks/ that shell out to the plugin's Node scripts. An existing hook file is preserved -- the installer only manages a block delimited by # BEGIN gsd-jira / # END gsd-jira.
$ARGUMENTS
Parse $ARGUMENTS:
--uninstall -> remove gsd-jira block from hooks (call scripts/uninstall-git-hooks.sh)--all -> install in every repo detected under src/*/.planning/ plus the project root if it has .planning/--strict -> after install, instruct the user to export GSD_JIRA_STRICT=1 to reject commits without a key$PWD${CLAUDE_PLUGIN_ROOT}/hooks/prepare-commit-msg.js exists.data/jira-mapping.json exists and is non-empty. If missing or empty, warn the user that hooks will no-op until /jira-seed or /jira-sync populates it..git/ exists. Skip and warn otherwise.Run the installer script via Bash:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/install-git-hooks.sh" "<target>"
For --all:
for f in src/*/.planning/ROADMAP.md; do
repo_dir=$(dirname "$(dirname "$f")")
bash "${CLAUDE_PLUGIN_ROOT}/scripts/install-git-hooks.sh" "$repo_dir"
done
# Also install at project root if it has .planning/
[ -d .planning ] && bash "${CLAUDE_PLUGIN_ROOT}/scripts/install-git-hooks.sh" "$PWD"
For --uninstall:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/uninstall-git-hooks.sh" "<target>"
Print a summary and a dry-run invocation the user can run:
# Simulate what a commit message would look like:
echo "refactor foo" > /tmp/gsd-jira-test-msg
node "${CLAUDE_PLUGIN_ROOT}/hooks/prepare-commit-msg.js" /tmp/gsd-jira-test-msg message
cat /tmp/gsd-jira-test-msg
If the file still reads refactor foo (no prefix), the resolver returned null. Likely causes:
.planning/STATE.md missing or without stopped_at: Phase Ndata/jira-mapping.json has no entry for the resolved card idsrc/<repo>/.planning/ or ./.planning/Report back the exit status of each install and any warnings raised.
Final message should list:
data/jira-mapping.json is populatedexport GSD_JIRA_STRICT=1)npx claudepluginhub dumorro/claude-gsd-jira-plugin --plugin claude-gsd-jira-pluginCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.