Verify gh is available and authenticated:
gh auth status
Handle errors distinctly:
command not found or similar): stop and tell the human “Install the GitHub CLI first: https://cli.github.com”gh is installed but not authenticated: stop and tell the human “Run gh auth login first, then try again.”Do not proceed until this check passes.
Collect everything needed to build the gist — in order of priority:
/create-gist fix.py) — use the file directly; skip temp file creation/create-gist the snippet above --public)Parse the following options from the arguments or conversation:
| Option | Default | Meaning |
|---|---|---|
--public |
off | Make the gist public instead of secret |
--desc <text> |
inferred | Gist description |
--filename <name> |
inferred | Override the filename shown in the gist |
If no content is identifiable, ask the human what to put in the gist before proceeding.
Multi-file gists are out of scope. If multiple files are referenced, ask the human to pick one.
Filename: If a real file was referenced, use its basename. If --filename was passed, use that value. Otherwise infer from context (e.g. fix.py, output.log, snippet.md). Default to gist.txt only as a last resort. The extension matters — gh uses it for syntax highlighting.
Description: Summarize the purpose in one short line. Pull from conversation context, the skill args, or the content itself. Keep it under 72 characters.
--public was passed → public gistPresent a summary to the human before creating anything:
File: <filename>
Description: <description>
Visibility: <secret or public>
Content:
---
<first ~20 lines or full content if short>
---
If the content contains secrets (API keys, tokens, passwords, private URLs) — flag them explicitly. Warn the human that even secret gists are accessible to anyone with the URL. Let them decide whether to proceed.
Ask for confirmation. Do not create the gist until the human says yes. If running non-interactively or if the human passed --yes, skip the confirmation prompt.
If the source is a file on disk, pass it directly:
# Secret (default)
gh gist create --desc "<description>" --filename "<filename>" <filepath>
# Public
gh gist create --public --desc "<description>" --filename "<filename>" <filepath>
If the source is content from the conversation, write it to a temp file first using mktemp with the correct extension (e.g. mktemp /tmp/gist-XXXXXX.py), then run:
# Secret (default)
gh gist create --desc "<description>" --filename "<filename>" <tmpfile>
# Public
gh gist create --public --desc "<description>" --filename "<filename>" <tmpfile>
After the gist is created (or if creation fails), delete the temp file immediately:
rm -f <tmpfile>
Return: