From workflow
Creates a GitHub issue from session context including specs, plans, or conversation summary. Uses optional file path argument and handles content discovery via script.
npx claudepluginhub sjungling/sjungling-claude-plugins[file-path]sonnetCreate a GitHub issue using the best available content from the current session.
Parse `$ARGUMENTS` for an optional file path override.
## Step 1: Discover Content
Run the discovery script to find the best content source. The script is located relative to this command file:
If `$SCRIPT_DIR` is empty or the script does not exist, compute the path from the plugin root. The script lives at `plugins/workflow/scripts/discover-issue-content.sh` relative to the marketplace root. As a fallback, use `${CLAUDE_PLUGIN_ROOT}/scripts/discover-issue-content.sh` if that variable is available.
Run t.../issue-createCreates a structured GitHub issue from current context or optional description. Checks for repo issue templates, drafts title/body with summary, behaviors, criteria, context, and notes.
/create-issueCreates a formatted GitHub or GitLab issue for the current git repository from provided topic/description, lists available labels, and requires user approval before using gh or glab CLI.
/create-issueCreates a GitHub issue in the current or specified repo with title, body, labels, assignees, milestone, project, and formatted reference links from URLs. Supports interactive template mode.
/plan-to-issueCreates structured GitHub plan issues from provided implementation plan text or file path, following plan guidelines and adding agentize:pr label.
/create-issueCreates a GitHub issue with automated codebase research, best practices analysis, and duplicate checks. Supports --quick mode for faster async execution.
/create-issueCreates a well-structured GitHub issue interactively: prompts for type-specific details (bug/feature/task), applies templates/labels/milestones/projects, and uses GitHub API. Reports issue URL.
Share bugs, ideas, or general feedback.
Create a GitHub issue using the best available content from the current session.
Parse $ARGUMENTS for an optional file path override.
Run the discovery script to find the best content source. The script is located relative to this command file:
SCRIPT_DIR="$(cd "$(dirname "$0")/../scripts" 2>/dev/null && pwd || echo "")"
If $SCRIPT_DIR is empty or the script does not exist, compute the path from the plugin root. The script lives at plugins/workflow/scripts/discover-issue-content.sh relative to the marketplace root. As a fallback, use ${CLAUDE_PLUGIN_ROOT}/scripts/discover-issue-content.sh if that variable is available.
Run the script, passing $ARGUMENTS if non-empty:
DISCOVERY=$(bash "$SCRIPT_DIR/discover-issue-content.sh" $ARGUMENTS 2>&1)
If the script exits non-zero, check stderr for {"error": "..."} and report the error to the user. Common errors:
gh CLI not installed — tell user to install GitHub CLIjq not installed — tell user to install jqnot in a git repository — abortfile not found: <path> — abort with the missing file pathParse the JSON output:
SOURCE=$(echo "$DISCOVERY" | jq -r '.source')
PRIMARY=$(echo "$DISCOVERY" | jq -r '.primary')
SECONDARY=$(echo "$DISCOVERY" | jq -r '.secondary')
LABEL=$(echo "$DISCOVERY" | jq -r '.label')
REPO=$(echo "$DISCOVERY" | jq -r '.repo')
SPECS=$(echo "$DISCOVERY" | jq -r '.candidates.specs[]' 2>/dev/null)
PLANS=$(echo "$DISCOVERY" | jq -r '.candidates.plans[]' 2>/dev/null)
Based on the SOURCE value:
explicit or claude-planPRIMARY already points to the file. Use it directly as $BODY_FILE.
superpowersIf PRIMARY is non-empty, use it as $BODY_FILE.
If PRIMARY is empty, there are multiple candidates that need disambiguation. Use AskUserQuestion to present the candidates from SPECS and/or PLANS and ask which file to use as the issue body. Set $BODY_FILE to the chosen file.
If SECONDARY is non-empty, it will be posted as a comment after issue creation.
summaryNo content files were found. Write a markdown summary of the current conversation covering:
Write the summary to a temp file:
BODY_FILE=$(mktemp /tmp/gh-issue-body-XXXXXX.md)
Check the byte count of $BODY_FILE:
wc -c < "$BODY_FILE"
If it exceeds 60000 bytes:
## or ### ) boundary before the 60000 byte mark\n\n---\n_Content truncated due to GitHub size limits. Full document: \`_`Apply the same size check to $SECONDARY if it is non-empty.
Extract a title suggestion from $BODY_FILE:
# (H1) heading in the fileUse AskUserQuestion to present:
SOURCE value)Build the label flag from the discovery output:
LABEL is non-empty, use --label "$LABEL"--labelgh issue create --title "<confirmed-title>" --body-file "$BODY_FILE" --label "$LABEL"
Capture the output — gh prints the issue URL on success.
If SECONDARY is non-empty:
echo "$ISSUE_URL" | grep -o '[0-9]*$'gh issue comment "$ISSUE_NUMBER" --body-file "$SECONDARY"
Remove any temp files that were created (do NOT remove the original source files).
Report to the user:
SOURCE)