From sop-builder
Generates IT Standard Operating Procedure (SOP) documents as formatted .docx files. Use this skill whenever the user wants to create an SOP, write a standard operating procedure, document an IT process, make a step-by-step procedure doc, or says things like "create an SOP", "write an SOP for...", "generate a standard operating procedure", "make an IT SOP", or invokes /sop-builder. Even if the user only partially describes a process, use this skill — it will gather what's missing through targeted questions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sop-builder:sop-builderThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill creates properly formatted IT Standard Operating Procedure (.docx) documents that match a specific template structure.
This skill creates properly formatted IT Standard Operating Procedure (.docx) documents that match a specific template structure.
Every generated SOP must have exactly these sections in this order:
Accept input in any form — pasted outline, plain language description, or answers to questions.
Map what the user provides to the five sections above. Then ask only about what's missing:
nav. Do not repeat the navigation path in body text as well.Never invent placeholder content. Only write what the user provides or confirms.
Write lean. Every word must earn its place. No filler phrases ("Please note that...", "It is important to..."), no restating the headline in the body, no over-explaining obvious clicks. If a nav breadcrumb covers where to go, the body should only cover what to watch for or why — not repeat the path in sentence form.
Write for non-technical readers. SOPs are sent to clients who may have no technical background. Apply these rules throughout:
Stay strictly on scope. An SOP covers exactly one process — no more. Do not pad steps with adjacent actions that belong to a separate SOP (e.g. adding users, assigning roles, connecting additional assets). If a logical next step falls outside the scope of this SOP, note it in Outputs as "→ See [related SOP name] to continue" rather than including it as a step here.
If the Purpose section cannot be meaningfully written (process too vague), flag this to the user before continuing.
Once all sections are gathered, show a brief structured summary for the user to confirm:
Title: [title]
Purpose: [first sentence...]
Inputs: [count] items
Steps: [count] steps
Outputs: [first output...]
FAQs: [count] Q&A pairs
Ready to generate the .docx?
Only proceed to generation after confirmation (or if the user says "yes" / "go ahead" / similar).
Build a JSON object with the SOP content and pass it to the generation script.
NODE_PATH="${CLAUDE_PLUGIN_DATA}/node_modules" node "${CLAUDE_PLUGIN_ROOT}/scripts/generate_sop.js" '<JSON_STRING>'
Where <JSON_STRING> is a single-quoted JSON string with this structure:
{
"title": "How to Reset a User's MFA Device",
"purpose": ["Sentence one.", "Sentence two if needed."],
"inputs": ["Admin access to Azure AD", "User's employee ID or email address"],
"steps": [
{
"headline": "User account located in Azure AD",
"body": "Navigate to portal.azure.com → Azure Active Directory → Users. Search by name or email.",
"image": "C:\\Users\\23057\\Downloads\\step1_screenshot.png"
},
{
"headline": "MFA reset button clicked",
"image": "C:\\Users\\23057\\Downloads\\step2_screenshot.png"
},
{
"headline": "Confirmation email sent to user",
"body": "The user will receive a reset prompt on next login. ✅ Confirm before closing the ticket."
}
],
"outputs": ["User receives a new MFA setup prompt on next login", "✅ Ticket marked resolved"],
"faqs": [
{
"question": "What if the user doesn't receive the MFA prompt?",
"answer": "Check that the MFA reset was saved and not just previewed. Re-open the user record to confirm."
}
]
}
body and image are both optional per step — but every step needs at least oneimage: the screenshot carries the step on its ownbody: text-only, same as beforeC:\\Users\\...)
### Filename
Derive the filename from the title: lowercase, replace spaces with underscores, append `_sop.docx`.
Example: "How to Reset a User's MFA Device" → `how_to_reset_a_users_mfa_device_sop.docx`
The script saves the file to the **current working directory** automatically.
### After generation
1. **Ask the user which format they want:**
> "Your SOP is ready. Would you like it as a **Word doc (.docx)**, a **PDF**, or **both**?"
2. If PDF is requested, convert using Word's COM object via PowerShell — same filename, same folder, `.pdf` extension. Use the full path returned by the script (current working directory):
```powershell
powershell -command "
\$word = New-Object -ComObject Word.Application
\$word.Visible = \$false
\$doc = \$word.Documents.Open('<full_path_to_docx>')
\$doc.SaveAs([ref]'<full_path_to_pdf>', [ref]17)
\$doc.Close()
\$word.Quit()
"
start "" "<full_path_to_file>"
(Use the correct extension based on what the user chose.)
Use emojis sparingly and purposefully — not decoratively:
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub yxdav/sop-builder-skill --plugin sop-builder