Install
$ agentstack add skill-jtsternberg-claude-plugins-temp-draft ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
temp-draft
The user prefers to collaborate on long-form drafts in their own text editor rather than read them inline in chat. This skill exists to break the default habit of pasting drafted content directly into responses — which is hard to edit, hard to save, eats context, and loses formatting / syntax highlighting.
When to use this
Use this skill when:
- The user invoked
/temp-draftdirectly. - The user explicitly said something like "draft this in editor", "open it in a temp file", "let's draft collaboratively", "put the draft in /tmp", or any equivalent phrasing.
Don't use this skill for:
- Quick one-line answers or short replies that belong inline.
- Edits to existing files in the project — use
Edit/Writeagainst the real file. - Brainstorming or back-and-forth conversation where the user is reading along.
- Code or docs that have an obvious real destination (e.g., a function in
src/, a section inREADME.md). The temp file is for drafts without a permanent home yet.
When in doubt, ask the user once whether they want the draft in chat or in /tmp. Guessing wrong wastes a turn either way.
Procedure
- Pick a descriptive filename. Format:
/tmp/collab-tools/-..
- All drafts live under
/tmp/collab-tools/so the companionpromote-draftskill can find them. Create the directory if it doesn't exist:mkdir -p /tmp/collab-tools. - `` is 3-5 kebab-case words describing the draft. Match the content, not generic ("blog-post-fence-fences", not "draft").
- `
matches the content type:.mdfor prose, plans, notes, structured docs;.txtfor plain unformatted text;.html,.py,.ts`, etc. for code. - Examples:
/tmp/collab-tools/cold-email-to-acme-2026-05-28.md/tmp/collab-tools/refactor-plan-auth-module-2026-05-28.md/tmp/collab-tools/talk-outline-react-conf-2026-05-28.md
- Write the draft to that file using the
Writetool. The file is the deliverable.
- Open it in the user's editor with this exact form:
``bash eval "${OPEN_IN_EDITOR_COMMAND:-${EDITOR:-vi}}" '/tmp/collab-tools/your-file.md' & disown 2>/dev/null || true ``
OPEN_IN_EDITOR_COMMANDtakes precedence over$EDITOR. Set it when your$EDITORis a blocking/--waitcommand (e.g.code --wait, used by git) that misbehaves when launched here. A backgrounded--waiteditor leaves a live process waiting for the file to close, which shows up as a duplicate "ghost" app instance in the macOS app switcher. Settingexport OPEN_IN_EDITOR_COMMAND=code(no--wait) opens the file in the existing window and returns immediately — no ghost. Falls back to$EDITOR, thenvi, when unset.- The
evalform is what makes multi-word editor settings work — values likecode --wait,cursor --wait, orsubl -n -wneed shell-level word splitting. Single-quote the path so spaces and special characters are safe. - The trailing
&+disownlaunch the editor non-blocking. Don't wait for the editor to close — a--waitflag (if present) still makes that editor window stay open until the user is done, but the shell returns immediately. The actual turn boundary is the user's next chat message ("good to go", "tweak section 2", "I changed X") — not the editor exit.
- Briefly tell the user where it landed. One short sentence with the path. Do NOT paste the draft content into the chat — the entire point is that the chat stays clean and the work lives in the editor.
Slack drafts: write Slack-flavored markup, not standard markdown
When the draft is a Slack message (the user says "draft a Slack message/reply/post", mentions a channel or thread, or the destination is clearly Slack), do NOT write standard markdown — Slack's paste-and-convert (cmd+shift+f) only understands a subset, and everything outside it survives as literal artifacts.
Read [references/slack-formatting.md](references/slack-formatting.md) before writing the draft — it has the full markdown → Slack conversion table and structure guidance.
Use the .txt extension for Slack drafts — a .md file makes editors copy rich text (rendered markdown styling), which corrupts the paste and breaks cmd+shift+f. Mention in your one-line confirmation that it's formatted for Slack paste.
What this looks like
Good:
> Drafted to /tmp/collab-tools/blog-post-fence-fences-2026-05-28.md and opened in your editor.
Bad:
> Here's the draft: > > # Don't Tear Down the Fence > > ... 600 lines of pasted markdown ...
Why "draft in chat" is the wrong default for this user
Pasting long drafts into the chat:
- Burns context the user will need for follow-up turns.
- Forces the user to copy-paste back into an editor to actually work with the text.
- Loses syntax highlighting, spellcheck, find/replace, and every other editor affordance.
- Makes iterative edits painful — every change re-renders the whole block.
A file in /tmp/collab-tools/ opened in the user's editor keeps chat lean, gives the user real editing power, and lets both sides refer back to "the draft" by path across many turns. The shared directory also gives the companion promote-draft skill a known place to look when moving a finished draft to its permanent home.
Notes for follow-up turns
After the draft is in /tmp, the user may iterate on it — asking for changes, additions, sections to rewrite. Edit the file with the Edit tool and tell the user briefly what changed. Still don't paste the contents.
If the draft is ready to live somewhere permanent (a blog post directory, a project doc, an email client), that's a separate operation — surface the file path and let the user decide where it goes, or ask if they want it moved.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jtsternberg
- Source: jtsternberg/claude-plugins
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.