writing

star 0

Applies conventions for technical writing including READMEs, developer docs, user guides, technical design documents, Notion pages, runbooks, ADRs, post-mortems, PR descriptions, and commit messages. Use when the user asks to write, draft, or improve any technical document, README, guide, design doc, Notion page, runbook, ADR, post-mortem, commit message, or PR description.

Prajaktcs By Prajaktcs schedule Updated 3/7/2026

name: writing description: Applies conventions for technical writing including READMEs, developer docs, user guides, technical design documents, Notion pages, runbooks, ADRs, post-mortems, PR descriptions, and commit messages. Use when the user asks to write, draft, or improve any technical document, README, guide, design doc, Notion page, runbook, ADR, post-mortem, commit message, or PR description.

Writing Skill

When to use this skill

  • Writing or improving READMEs for apps or tooling
  • Writing developer docs, API guides, or user-facing documentation
  • Drafting technical design documents (TDDs)
  • Writing Notion pages or documents
  • Writing or improving operational runbooks
  • Drafting architecture decision records (ADRs)
  • Writing incident post-mortems or root cause analyses
  • Crafting commit messages or PR descriptions
  • Improving clarity of any engineering documentation

Do not use this skill when

  • Writing code (even if it includes inline comments)
  • Non-technical creative writing

Core Principles

  • Lead with the conclusion — state the key point first, then provide context and detail
  • Be specific — replace vague words ("large", "slow", "soon") with measurable values (">1GB", ">30s P99", "by end of sprint")
  • One idea per sentence — break run-on sentences; prefer short over long compound ones
  • Clarity over cleverness — plain language beats jargon; define terms that aren't universally known on your team

READMEs

Structure

# [Project Name]

[One sentence: what this is and who it's for.]

## Overview
[2–4 sentences covering the problem it solves, why it exists, and any important context.
Skip this section if the one-liner is sufficient.]

## Getting Started

### Prerequisites
- Requirement 1 (e.g., Flutter 3.x, Python 3.11+)
- Requirement 2

### Installation / Setup
[Minimal steps to get it running. Use numbered steps. Include exact commands.]

## Usage
[The most common use case, shown concretely. Code block or command first, explanation after.]

## Documentation
[Link to fuller docs, Notion, or a /docs folder if they exist.]

## Contributing
[How to contribute, or a pointer to CONTRIBUTING.md. Omit for personal/solo projects.]

## License
[License name and link, or "Internal — not for distribution."]

Rules

  • The one-liner at the top must be readable by someone who has never heard of the project
  • Show usage with real examples — not placeholder strings — wherever possible
  • Don't document what the code makes obvious; link to fuller docs for depth
  • Keep it scannable: someone should find what they need in under 30 seconds

Developer Docs & User Guides

Structure

# [Feature or API Name]

## Overview
[What this is and when you'd use it. 1–3 sentences.]

## Prerequisites
[What the reader needs to know or have set up before following this doc.]

## Quick Start
[The shortest path to something working. Prioritize this — most readers stop here.]

\`\`\`[language]
// Minimal working example
\`\`\`

## How It Works
[Explain the key concepts or mental model needed to use this correctly.
Avoid restating code — explain the why and the shape of the system.]

## Reference

### [Method / Endpoint / Config Option]
**Description:** What it does
**Parameters / Fields:**
| Name | Type | Required | Description |
|------|------|----------|-------------|

**Example:**
\`\`\`[language]
// concrete example
\`\`\`

## Common Patterns
[2–3 real-world usage examples beyond the quick start.]

## Troubleshooting
[The 3–5 errors or confusions people actually hit, with fixes.]

Rules

  • Every public API, method, or config option must have at least one code example
  • Quick Start must work end-to-end without reading anything else
  • Write for the reader's goal, not the implementation's structure — organize by what they want to do, not how the code is organized
  • If the audience is mixed (developers + less-technical users), put the quick start first and put technical depth in a Reference section at the end

Technical Design Documents (TDDs)

Structure

# [Feature / System Name] — Technical Design

**Author:** [Name]
**Status:** Draft | In Review | Approved
**Date:** YYYY-MM-DD
**Stakeholders:** [Teams or names who need to review or be aware]

## Problem Statement
[What problem are we solving? Why does it matter, and why now?
Be specific — include scale, frequency, or cost if relevant.]

## Goals
- Goal 1
- Goal 2

## Non-Goals
[Explicitly list what this design does NOT address. This is as important as the goals.]

## Background
[Any prior work, existing systems, constraints, or context the reader needs.
Link to relevant docs rather than duplicating them.]

## Proposed Solution
[Describe the approach at the right level of abstraction — enough to evaluate it,
not so much detail that it becomes an implementation spec.]

### Key Design Decisions
[The most important choices made and why. This is the core of the document.]

## Alternatives Considered
| Option | Pros | Cons | Why Not Chosen |
|--------|------|------|----------------|

## Implementation Plan
[High-level phases or milestones. Include rough sizing only if known and useful.]

## Success Metrics
[How will you know this worked? Be specific — metrics, thresholds, or observable behaviors.]

## Open Questions
- [ ] Question 1 — Owner: @name, Due: [date or milestone]
- [ ] Question 2

## Risks & Mitigations
| Risk | Likelihood | Impact | Mitigation |
|------|------------|--------|------------|

Rules

  • Problem Statement must justify the work — if you can't explain why it matters, the design isn't ready
  • Non-Goals are mandatory — they prevent scope creep and set reviewer expectations
  • Alternatives Considered must include at least one real alternative, not just "do nothing"
  • Open Questions should be resolved before the doc moves from Draft to Approved
  • Keep the document focused on decisions, not implementation details — code belongs in the PR

Notion Documents

When writing in Notion

  • Use the same templates above (README, TDD, guide) — structure doesn't change, just the medium
  • Use Callout blocks for: warnings ⚠️, important notes ℹ️, and tips 💡
  • Use Toggle blocks for: detailed reference material, alternatives, or content that breaks the main reading flow
  • Use Dividers between major sections to aid scanning
  • Keep the page title short and searchable — it's how people find it later

Page hierarchy conventions

  • One page per document — don't nest a TDD inside a meeting notes page
  • Link related pages explicitly (Notion inline links) rather than duplicating content
  • If a document lives in both Notion and the repo (e.g., a README), pick one as the source of truth and link from the other

Rules

  • Write the same way you would in Markdown — Notion is just the renderer
  • Avoid Notion-only features (like inline databases) for content that may need to be exported or shared outside Notion
  • Always set page status (Draft / In Review / Approved) as a page property, not inline text

Runbooks

Structure

# [Service/Pipeline Name] Runbook

## Overview
One sentence: what does this system do and why does it matter?

## On-call Contacts
| Role       | Contact     |
|------------|-------------|
| Primary    | @engineer   |
| Escalation | @team-lead  |

## Common Failure Modes

### [Symptom]
**Diagnosis:** How to confirm this is the issue
**Fix:** Step-by-step resolution
**Prevention:** What to change to avoid recurrence

## Metrics & Alerts
| Alert                    | Threshold | Action             |
|--------------------------|-----------|--------------------|
| Replication slot lag     | >1GB      | Check connector    |

## Escalation Path
If unresolved after [N] minutes, page [team/oncall rotation].

Rules

  • Every step must be executable as written — no "figure out which environment" ambiguity
  • Include exact commands, not descriptions of commands
  • Note expected output so the reader knows a step succeeded
  • Mark irreversible steps with a ⚠️ warning

Architecture Decision Records (ADRs)

Structure

# ADR-[NNN]: [Short Title]

**Status:** Proposed | Accepted | Deprecated
**Date:** YYYY-MM-DD
**Deciders:** [Names or teams]

## Context
What situation or problem prompted this decision? What constraints exist?

## Decision
[What was decided, stated clearly and definitively.]

## Consequences
**Positive:** What this enables or improves
**Negative:** Trade-offs or risks introduced
**Neutral:** What changes but is neither good nor bad

Rules

  • ADRs are immutable once accepted — create a new ADR to supersede; never edit an accepted one
  • "Decision" must be a clear statement of what was chosen, not a discussion of options
  • Always capture the "why" — future readers need context, not just the outcome

Incident Post-Mortems

Structure

# Incident Post-Mortem: [Short Title]

**Severity:** P1 / P2 / P3
**Date:** YYYY-MM-DD
**Duration:** HH:MM
**Impact:** [Who was affected and how]

## Timeline
| Time (UTC) | Event                        |
|------------|------------------------------|
| HH:MM      | First alert fired            |
| HH:MM      | On-call paged                |
| HH:MM      | Root cause identified        |
| HH:MM      | Incident resolved            |

## Root Cause
[Single, specific technical statement of what caused the incident.]

## Contributing Factors
- Factor 1
- Factor 2

## What Went Well
- ...

## Action Items
| Action           | Owner      | Due Date   |
|------------------|------------|------------|
| Add alert for X  | @engineer  | YYYY-MM-DD |

Rules

  • Root cause must be specific — "misconfiguration" is not a root cause; "the slot.drop.on.stop property was set to true in production" is
  • Action items must be assigned and dated — unowned items don't get done
  • Post-mortems are blameless — describe system behavior and actions taken, not people's mistakes

Commit Messages

Format

<type>(<scope>): <short summary in imperative mood>

<optional body: what and why, not how>

<optional footer: breaking changes, ticket references>

Types

  • feat: new functionality
  • fix: bug fix
  • refactor: restructuring without behavior change
  • chore: maintenance (deps, tooling, CI)
  • docs: documentation only
  • perf: performance improvement

Rules

  • Subject line ≤ 72 characters, imperative mood ("add" not "added", "fix" not "fixes")
  • Body explains why, not what — the diff shows what changed
  • Reference tickets in the footer: Closes #123

PR Descriptions

Template

## What
[One sentence: what does this PR do?]

## Why
[Why is this change needed? Link to ticket or incident if relevant.]

## How
[Brief description of the approach — only if non-obvious from the diff.]

## Testing
- [ ] Unit tests added/updated
- [ ] Tested in staging
- [ ] Runbook updated (if operational change)

## Risk
[Low / Medium / High] — [Brief justification]

Rules

  • "What" must be readable by someone unfamiliar with the codebase
  • Always include testing evidence for production changes
  • Flag breaking changes or rollback complexity under Risk
Install via CLI
npx skills add https://github.com/Prajaktcs/dotfiles --skill writing
Repository Details
star Stars 0
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator