# Formatting Conventions ## Markdown in Instructions Avoid `**bold**` and other emphasis markers in skill/instruction text unless explicitly formatting output. Claude doesn't need visual emphasis to understand importance — the words themselves convey it. **Use markdown when**: formatting actual output, examples, or user-facing content **Skip markdown when**: writing instructions, rules, or guidance for Claude ## Concision Principle Sacrifice grammar for concision — drop articles, filler words, verbose phrases. But don't strip meaning or context. Goal is density, not minimalism. If removing a word makes the instruction ambiguous, keep it. Good: "Ask one question, wait for response" Bad: "Ask question wait response" ## Variables and Placeholders **Variables** — all caps, no spaces, curly braces: - `{VARIABLE}` — concrete placeholder to be replaced - Examples: `{N}`, `{REASON}`, `{BAR}`, `{NAME}`, `{FILE_PATH}` **Instructional prose** — lowercase, spaces inside braces: - `{ description of what goes here }` — guidance for what to fill in - Examples: `{ question text }`, `{ why it matters }`, `{ if needed }` ## XML Tags in Skills Use XML tags for structural sections in skill files: - `` — trigger conditions - `` — confidence levels/tracking - `` — workflow stages - `` — core process loop - `` — always/never constraints - `` — links to supporting docs Keep content inside tags terse. Sacrifice grammar for concision where meaning is preserved. **GitHub rendering**: Add blank lines after opening tags and before closing tags. Without them, content renders incorrectly on GitHub. ```markdown - First rule - Second rule - First rule - Second rule ``` ## Markdown Tables Use markdown tables for structured data. Ensure the table is properly formatted with the correct number of columns and rows. ```markdown | Column 1 | Column 2 | Column 3 | | -------- | -------- | -------- | | Data 1 | Data 2 | Data 3 | ``` Ensure pipes are properly aligned with spaces surrounding text or hyphens, at least between the header and separator rows. If pipes are used within a cell, ensure they are properly escaped. ## Indicators Prefer ASCII/Unicode over emoji for terminal output (Claude Code, CLI, interactive sessions). Emoji acceptable in docs or user-facing content where rendering is reliable. ### Progress - `░` — empty (light shade) - `▓` — filled (medium shade) - Example: `▓▓▓░░` = 3/5 - Use for confidence, completion, capacity — anything with discrete levels ### Severity Escalating: - `◇` — minor/informational - `◆` — moderate/warning - `◆◆` — severe/blocking - Use for pushback, risk, alerts, uncertainty levels ### Caveats - `△` — incomplete/uncertain (warning triangle U+25B3) - **Mid-stream**: `△` + description — flags issue for immediate attention - **At delivery**: `△ Caveats` — summary section of gaps, unknowns, assumptions, concerns, deferred items ### Checkmarks - `✓` — completed/decided (U+2713) - Use for "Decisions Made:" lists, completed items, confirmed choices - Example: ```text Decisions Made: ✓ /simplify offers two modes: quick (skill) vs deep (agent) ✓ Agent returns: complexity identified + alternatives + escalation level ✓ Uses ◇/◆/◆◆ indicators from simplify skill ``` ### Emphasis Append to text: - `★` — recommended/preferred ## Interactive Questions For multi-option questions in skills: - Use `EnterPlanMode` — enables keyboard navigation - **Prose above tool**: context, "why it matters" - **Inside tool**: options with inline recommendation marker - Always include escape hatch: "5. Something else — { brief prompt }" ### Inline Recommendations Mark recommended option inline with `[★]` + emphasized rationale: ```text 1. Google only [★] — simplest, highest coverage *good starting point, expand later* 2. Google + GitHub — covers consumer and developer users 3. Google + GitHub + Microsoft — comprehensive, more maintenance ``` Pattern: `N. Option name [★] — brief description *why recommended*` - `[★]` visually distinguishes the recommendation - `*italicized rationale*` provides quick reasoning - Everything scannable in one place ## Tasks Give tasks friendly, context-specific descriptions instead of generic stage names. The description should tell the user what's actually happening. **Prefer**: ```text - [x] Consider skills to load - [ ] Prep auth system requirements - [ ] Explore authentication approaches - [ ] Clarify platform and fallback needs - [ ] Deliver implementation plan ``` **Avoid**: ```text - [ ] Gather Context - [ ] Synthesize Requirements - [ ] Provide Deliverables ``` ## Skill References When referencing skills in documentation, use specific language based on skill type: | Skill Type | Language | Example | |------------|----------|---------| | Standard | "Load the skill" | Load the `outfitter:skills-dev` skill | | Delegated (`context: fork` + `agent`) | "Delegate by loading" | Delegate by loading the `outfitter:security-audit` skill | **Standard skills** load instructions into the current context. The agent continues with those instructions available. **Delegated skills** hand off work to a subagent. The subagent runs in isolation and returns results. **Format**: Always use backticks for skill names: `` `plugin:skill-name` `` **Never**: Link to SKILL.md files. Always use the load/delegate pattern. ```markdown # Wrong See [skills-dev](../skills-dev/SKILL.md) for patterns. # Right Load the `outfitter:skills-dev` skill for patterns. ``` ## Steps in Skills Use a `## Steps` section for composable skill workflows. Place immediately after the H1 title. ```markdown ## Steps 1. Load the `plugin:prerequisite-skill` skill 2. { main action for this skill } 3. If { condition }, load the `plugin:conditional-skill` skill 4. { final action or output } ``` **Pattern rules**: - Numbered list (order matters) - Skill references use: `Load the \`plugin:skill-name\` skill` - Conditional steps: `If { condition }, load...` or `If { condition }, { action }` - Action descriptions: brief, imperative, no articles - Keep to 3-6 steps; split into stages if longer **Delegated skills**: See "Skill References" section above for load vs delegate language. **Plan mode and questions**: Use for decision points and user input: ```markdown 5. Enter Plan mode 6. Present options with AskUserQuestion ``` **Brainstorming**: For complex problems, get multiple perspectives: ```markdown 2. Brainstorm with Plan agent for approaches ``` **When to use**: - Skill depends on another skill being loaded first - Workflow has clear sequential stages - Steps can branch based on context **When to skip**: - Single-purpose skills with no dependencies - Skills where workflow is the entire body (use `` tag instead) ## Markdown Links Use short aliases for readability. Keep paths intact. Prefer: `[filename.md](path/to/filename.md)` Avoid: `[path/to/filename.md](path/to/filename.md)` ```text # Good - [confidence.md](references/confidence.md) - [FORMATTING.md](../rules/FORMATTING.md) # Avoid - [references/confidence.md](references/confidence.md) - [../rules/FORMATTING.md](../rules/FORMATTING.md) ```