Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Setup

ASecurity

This skill should be used when the user asks to create a writing profile, set up their blog voice, create a new blog profile, or edit an existing profile. Trigger phrases: "draftloom setup", "create a blog profile", "new writing profile", "set up my blog voice", "edit my writing profile", "draftloom new profile", "/draftloom:setup". Use this skill whenever the user wants to configure how Draftloom writes — even if they don't use the exact command name.

2 stars
0 votes
0 copies
0 views
Added 9/19/2026
ai-agentsgo

Security Analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned 9/19/2026

$npx -y skills add neotherapper/claude-plugins --skill setup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Setup?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Setup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/neotherapper-setup/badge)](https://www.skillsdirectory.com/skills/neotherapper-setup)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: setup
description: >
  This skill should be used when the user asks to create a writing profile,
  set up their blog voice, create a new blog profile, or edit an existing
  profile. Trigger phrases: "draftloom setup", "create a blog profile",
  "new writing profile", "set up my blog voice", "edit my writing profile",
  "draftloom new profile", "/draftloom:setup". Use this skill whenever the
  user wants to configure how Draftloom writes — even if they don't use the
  exact command name.
license: MIT
metadata:
  version: "0.1.0"
  author: Georgios Pilitsoglou
---

# Draftloom Setup Skill

Guides the user through creating or editing a named voice profile for blog post drafting.

## Entry point

On invocation, check `.draftloom/profiles/` for existing profile files.

### If no profiles directory or directory is empty

First, check if `.draftloom/config.json` exists.

If it does not exist, ask: "Store profiles in this project only, or globally? (project/global)"

Wait for the answer. Create `.draftloom/config.json` with the chosen `storage_mode`:
- "project" → `{ "storage_mode": "project", "storage_path": ".draftloom", "version": "0.1.0", "created_at": "<ISO-8601 now>" }`
- "global" → `{ "storage_mode": "global", "storage_path": "~/.draftloom", "version": "0.1.0", "created_at": "<ISO-8601 now>" }`

Then proceed to the "Create mode" section below.

### If profiles exist

Present three options:
1. Create a new profile
2. Edit an existing profile (list profile names)
3. Delete a profile (list profile names, ask for confirmation)

Wait for the user's choice before proceeding.

---

## Edit mode (`/draftloom:setup edit {name}` or user chooses option 2)

Read `.draftloom/config.json` to determine storage_mode. Load the profile JSON from:
- `storage_mode: "global"` → `~/.draftloom/profiles/{name}.json`
- `storage_mode: "project"` (or absent) → `.draftloom/profiles/{name}.json`

Show current values for all fields. Ask the user which field(s) to update. Apply each change one at a time, confirming with the before/after delta format: `Before: {old_value} → After: {new_value}`.

After each confirmed change, ask: "Edit another field? (y/n)" Loop back to field selection if yes.

Save the updated profile to the same path that was loaded. Update `updated_at` to the current ISO-8601 timestamp. Confirm: "Profile '{name}' updated."

Load `references/profile-schema.md` to validate field formats before saving.

---

## Create mode (no profiles exist, or user chooses option 1)

Ask the following 3 essential questions **one at a time**. Wait for the answer to each before asking the next.

Load `references/interview-questions.md` for the exact question wording and validation rules.

### Question 1 — Profile name

Ask for a profile name (slug format, e.g. `george-personal`). Validate:
- Lowercase only, hyphens allowed, no spaces, no special characters
- 3–40 characters
- Must not match an existing profile name in the storage path

Check existing profiles in the storage path. If a profile with the same name already exists, explain the conflict: "A profile named '{name}' already exists. Please choose a different name." Re-ask until a unique valid name is given.

### Question 2 — Target audience

Ask: "Who is your target reader? (e.g. indie hackers, senior engineers, marketing managers)"

Accept free text. Minimum 10 characters — if shorter, ask them to be more specific.

### Question 3 — Tone

Ask: "How would you describe your writing tone? Choose 3–5 adjectives, or pick from these presets:
- authoritative
- conversational
- technical
- witty
- direct
- inspirational

You can mix presets and your own words."

Accept a list of 3–5 adjectives. If fewer than 3 are given, explain: "The minimum is 3 tone adjectives. You've given {N} — please add {3-N} more." Re-ask until at least 3 are provided.

---

## Save profile

Construct the profile JSON using the 3 collected answers. Include only the fields collected (id, audience, tone, storage, created_at, updated_at). Omit all optional fields that were not collected — do not write them as null. Load `references/profile-schema.md` for the full schema.

Determine storage path from `.draftloom/config.json` → `storage_mode`:
- `"global"` → write to `~/.draftloom/profiles/{name}.json`
- `"project"` (or any other value) → write to `.draftloom/profiles/{name}.json`

Load `references/storage-guide.md` if the user asks about storage options.

Write the profile JSON. Confirm using the path that matches the resolved `storage_mode` (the same location you wrote to above):
- `"global"` → "Profile '{name}' saved to `~/.draftloom/profiles/{name}.json`."
- `"project"` (or any other value) → "Profile '{name}' saved to `.draftloom/profiles/{name}.json`."

---

## Post-save: deferred fields hint

After confirming save, show:

```
Profile created. Optional extras you can add later with `/draftloom:setup edit {name}`:
  • Blog URL
  • Content pillars (topic clusters)
  • Distribution channels
  • Typical post length preference
  • Writing inspiration (authors, publications)
  • CTA goal (newsletter, follow, contact)
```

---

## Delete mode (user chooses option 3)

List profiles. Ask which to delete. Ask for confirmation: "Delete '{name}'? This cannot be undone. (y/n)". On confirmation, remove the file. Confirm deletion.

---

## Reference files

Load these files as needed — do not load all at once:

- **`references/interview-questions.md`** — exact wording for all 9 interview questions (3 essential + 6 deferred), validation rules, and accepted input formats
- **`references/profile-schema.md`** — full JSON schema for profile files, field definitions, validation rules, and the distinction between required and optional fields
- **`references/storage-guide.md`** — project vs global storage modes, config.json structure, path resolution, and mode-switching instructions

Attribution

neotherapperneotherapper
View sourceSee grades on GitHubMore from neotherapper →
SSkills Directory ProSkills Directory

Get any skill into Claude in one click.

Download any skill as a ZIP for Claude.ai, Claude Desktop, or .claude/skills. $9/mo.

See Pro

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills Directory ProSkills Directory

Get any skill into Claude in one click.

Download any skill as a ZIP for Claude.ai, Claude Desktop, or .claude/skills. $9/mo.

See Pro

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

696561 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes
View all in ai-agents →