Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
17a933b
docs: Add Claude Code writing style guide
mnmkng Jan 21, 2026
eeba13d
Enhance writing style guide with accessibility and content type rules
mnmkng Jan 21, 2026
65ad77e
Fix linting errors in writing style guide
mnmkng Jan 21, 2026
9200730
Fix remaining table alignment issues
mnmkng Jan 21, 2026
91bc313
Move writing-style rules to .cursor/rules, symlink from .claude/rules
mnmkng Jan 21, 2026
0547c5e
Add symlinks for file-organization and quality-standards rules
mnmkng Jan 21, 2026
a8f4b38
Fix symlink direction: .claude/rules is now canonical source
mnmkng Jan 21, 2026
ab44144
Exclude AI assistant config files from Vale linting
mnmkng Jan 21, 2026
8f99fdd
Apply suggestions from code review
mnmkng Jan 26, 2026
20300a3
docs: add Claude Code infrastructure and skills
marcel-rbro Jan 21, 2026
6e65d16
docs: enhance Claude Code instructions with critical style rules
marcel-rbro Jan 21, 2026
1171a0b
fix: resolve vale and markdown lint errors
marcel-rbro Jan 21, 2026
08710d7
fix: resolve remaining vale error and remove redundant file
marcel-rbro Jan 21, 2026
34bfee2
fix: add blank lines for markdown lint compliance in instructions.md
marcel-rbro Jan 21, 2026
cde5c63
fix: add missing blank line after Admonition Format heading
marcel-rbro Jan 21, 2026
db0cf0b
fix: resolve markdown lint errors in skill files
marcel-rbro Jan 21, 2026
be52311
fix: resolve lint errors and add .claude files to vale H1 exception
marcel-rbro Jan 21, 2026
fc49082
fix: add closing fence to markdown code block example
marcel-rbro Jan 21, 2026
d1c4b8c
chore: ignore .claude directory in markdown and prose linting
marcel-rbro Jan 21, 2026
5b6dcd6
fix: remove outdated examples and improve clarity in documentation re…
marcel-rbro Jan 21, 2026
cc09b76
fix headings
marcel-rbro Jan 21, 2026
38ddbd6
fix heading casing
marcel-rbro Jan 21, 2026
cb3e6c7
fix headings_final
marcel-rbro Jan 21, 2026
9b130f9
fix: standardize heading casing and improve clarity in documentation
marcel-rbro Jan 21, 2026
4607e23
refactor: consolidate and reorganize .claude/ documentation
marcel-rbro Jan 26, 2026
b2719eb
feat: add comprehensive Claude Code documentation standards
marcel-rbro Jan 26, 2026
2c49bbf
fix: clarify heading hierarchy and admonition title requirements in q…
marcel-rbro Jan 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .claude/rules/file-organization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
description: File naming conventions and directory structure standards
globs: ["sources/**/*"]
alwaysApply: true
---

# File Organization Rules

## Naming conventions

- Use **kebab-case** for file names: `web-scraping-basics.md`
- Use **descriptive names** that reflect content
- Group related files in **logical directories**

## Directory structure

```text
sources/
├── platform/ # Platform documentation
│ ├── actors/ # Actor-related content
│ ├── storage/ # Storage documentation
│ └── integrations/ # Integration guides
└── academy/ # Educational content
├── tutorials/ # Step-by-step guides
├── webscraping/ # Web scraping courses
```
20 changes: 20 additions & 0 deletions .claude/rules/quality-standards.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
description: Content quality checklist and review standards
globs: ["sources/**/*.md", "sources/**/*.mdx"]
alwaysApply: true
---

# Quality Standards

## Content quality guidelines

When creating or editing content, ensure:

- [ ] Content follows Microsoft style guide (sentence case headings, proper emphasis)
- [ ] Front matter includes proper title, description, and metadata
- [ ] Code examples are complete and include proper syntax highlighting
- [ ] All links use descriptive text (avoid "click here")
- [ ] Images include meaningful alt text
- [ ] Content uses inclusive language and active voice
- [ ] Headings follow proper hierarchy (H1 → H2 → H3)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quick note here, that is not actual how we should do it. In frontmatter we use title that docusaurus automatically uses as H1 if there is hard-coded H1 (and usually there is not) it makes for easier maintenance. Not sure if we can make Claude infer that title key in frontmatter = H1 after transformation from .md to HTML

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I follow. This is just a copy of the previous cursor rule that's been recreated as MD and then symlinked back to MDC for compatibility.

Are you saying that we need to update the original rule or that there's something wrong with the file now?

Copy link
Copy Markdown
Contributor

@TC-MO TC-MO Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sorry, sleep deprivation may have gotten the best of me on that one. Let me clarify. The rule itself is fine, I'm suggesting we clarify the wording to avoid confusion.
Current wording implies authors should write H1s manually:

  • Heading hierarchy is correct (H1 → H2 → H3, no skipped levels)

But in Docusaurus, the title front matter key generates the H1 automatically. Authors should never write a manual # Heading - they start at H2.

Perhaps a rewording to something like:

  • Heading hierarchy is correct (H2 → H3 → H4, no skipped levels; H1 comes from front matter title)

This helps LLM s(and human contributors) understand they shouldn't add manual H1s while still enforcing proper hierarchy.

Does that make sense?

- [ ] Content is clear, concise, and action-oriented
289 changes: 289 additions & 0 deletions .claude/rules/writing-style.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,289 @@
---
description: Comprehensive writing style rules for Apify documentation
globs: ["sources/**/*.md", "sources/**/*.mdx"]
alwaysApply: true
---

# Apify Documentation Writing Style

Instructions for AI assistants writing Apify documentation. Based on Apify style guide and technical writer feedback.

## Core Principles

1. **Simple** - Get to the point. No sentence over 30 words. Every sentence delivers information.
1. **Factual** - Back up claims with evidence. Use numbers, not vague qualifiers.
1. **Technical** - Write for developers. Don't oversimplify. Link to fill knowledge gaps.

> Write the same way you would explain something to a person sitting next to you.

## Content Types

Match language to content type:

| Content type | CTA verbs | Example |
| ---------------- | ------------------------- | -------------------------------------------- |
| Tutorials/guides | Learn, Build, Create | "Learn how to build a web scraper" |
| Reference docs | Access, Integrate, Use | "Access the Apify platform programmatically" |
| Discovery pages | Explore, Discover, Browse | "Explore available Actors" |

Don't use "Learn" for pure reference documentation - it sets tutorial expectations.

## Language & Tone

### US English

Use "analyze" not "analyse", "color" not "colour".

### Imperative tone

Use direct instructions, not soft recommendations:

| Avoid | Prefer |
| --------------------------------- | ------------------- |
| We recommend pinning the version | Pin the version |
| You should use the latest SDK | Use the latest SDK |
| It's best to avoid hardcoding | Avoid hardcoding |

### No sales language

| Avoid | Prefer |
| ------------------------------------------ | --------------------------------------------------- |
| Experience Apify, the ultimate platform! | Welcome to Apify, the cloud web scraping platform. |
Comment thread
mnmkng marked this conversation as resolved.
Outdated
| Our highly efficient system | Apify's system handles 500K requests per minute |

### Avoid first person

Use "you" to focus on the reader. Avoid "I", "me", "myself" in docs.

| Avoid | Prefer |
| ------------------------------------- | -------------------------------- |
| I recommend using version 22 | Use version 22 |
| In my experience, this works better | This approach is more reliable |

### Active & inclusive voice

Use active voice. Avoid gendered terms. Don't use directional language ("left/right") for UI - it breaks with different layouts.

| Avoid | Prefer |
| --------------------------------- | -------------------------------- |
| The Actor is started by the user | The user starts the Actor |
| He can configure his settings | You can configure your settings |
| Click the button on the left | Click the **Settings** button |

## Formatting

### Headings

**Sentence case only.** No title case.

| Avoid | Prefer |
| --------------------- | --------------------- |
| Store And Manage Data | Store and manage data |

**No gerunds (-ing forms).** Use noun phrases or imperatives.

| Avoid | Prefer |
| ----------------------------- | -------------------------- |
| Finding available tags | Available tags |
| Getting started with Actors | Get started with Actors |
| Understanding the API | API overview |

Rationale: Noun-phrase headings are more scannable and search-friendly (Microsoft style guide).

### Bold

**Do use bold for:**

- UI elements (buttons, menus, fields): Click the **Actors** button
- Critical warnings or key terms

**Don't use bold for:**

- List introductions
- Code block introductions
- Section labels when context is clear

| Avoid | Prefer |
| ------------------------------- | ----------------------------- |
| **Examples:** | Examples: |
| **In your Dockerfile**, use... | In your `Dockerfile`, use... |

Bold for UI elements helps users scan for clickable items. Bold for structure creates visual noise.

### Italics

Use italics for emphasis and introducing new terms:

| Use case | Example |
| ------------------------ | --------------------------------------------- |
| New term introduction | An *Actor* is a serverless program... |
| Emphasis | This step is *required* for the Actor to work |

### List types

**Numbered lists** - Sequential steps where order matters
**Bullet points** - Non-sequential items, features, options

In numbered lists, use `1.` for all items (not sequential numbers). Easier to maintain:

```markdown
1. First step
1. Second step
1. Third step
```

### Parallel structure

All items in a list must follow the same grammatical pattern:

```markdown
# Avoid - mixed patterns
1. Reproducibility - your builds behave the same
1. Predictability - you know which version
1. Easier to track down issues

# Prefer - consistent pattern
1. Reproducibility - Your builds behave the same way
1. Predictability - You know exactly which version you're running
1. Debugging - Version-specific issues are easier to track down
```

### Em dashes

**Don't use em dashes (—).** LLMs overuse them. Use hyphen with spaces ( - ) instead.

### Admonitions

Use Docusaurus admonitions for important information:

| Type | Use for |
| ------------ | ------------------------------------------- |
| `:::note` | General callouts |
| `:::tip` | Helpful suggestions |
| `:::info` | Background context |
| `:::caution` | Warnings about gotchas |
| `:::danger` | Critical warnings that could cause issues |

Prefer admonitions over block quotes for highlighted content.
Comment thread
marcel-rbro marked this conversation as resolved.

## Grammar

### Articles in definitions

Include "a/an" before nouns in definition lists:

| Avoid | Prefer |
| ---------------------------------- | ------------------------------------ |
| `{version}` - Node.js version only | `{version}` - A Node.js version only |

### Oxford comma

Always use the serial comma:

| Avoid | Prefer |
| ---------------------------- | -------------------------------- |
| pencil, eraser and notebook | pencil, eraser, and notebook |

### "the" before products

Use "the" before "Apify platform", "Apify SDK", etc.

| Avoid | Prefer |
| -------------------- | ------------------------- |
| I use Apify platform | I use the Apify platform |

## Terminology

### Capitalization

- **Actor** - Always uppercase when referring to Apify Actors
- **Apify Proxy**, **Apify Console**, **Apify Store** - Product names, capitalized
- **the Apify platform** - Lowercase "platform", include "the"
- **task**, **schedule** - Lowercase

### Word choice

| Word | When to use |
| ----------- | ------------------------------------------- |
| legacy | Feature is deprecated or will be removed |
| alternative | Valid approach, but not the preferred one |
| deprecated | Feature will be removed in a future version |
Comment thread
mnmkng marked this conversation as resolved.
Outdated

## Links

### Action-oriented text

| Avoid | Prefer |
| --------------------------------- | --------------------------------------- |
| [actor-node-playwright tags](url) | [View actor-node-playwright tags](url) |
| See the [documentation](url) | [Read the documentation](url) |

### Accessible link text

Use descriptive link text. Avoid generic phrases like "click here" or "this link" - screen readers often read links out of context.

| Avoid | Prefer |
| ---------------------------------- | ----------------------------------------- |
| `[Click here](url)` to learn more | `[Learn about Actor pricing](url)` |
| Read more about it `[here](url)` | Read the `[Actor development guide](url)` |

### Make tool mentions navigable

When mentioning tools, languages, or external resources, link them to help readers explore:

| Avoid | Prefer |
| ----------------------------------- | ----------------------------------------------------------- |
| You can use Playwright for this | You can use [Playwright](https://playwright.dev) for this |

### Trim filler words

| Avoid | Prefer |
| ------------------------------ | --------------------- |
| visit the Docker Hub tags page | visit Docker Hub |
| check out the official docs | see the documentation |
Comment thread
mnmkng marked this conversation as resolved.
Outdated
Comment thread
mnmkng marked this conversation as resolved.
Outdated

### Actor references

First mention: Actor name with link, capitalized.

```markdown
[Website Content Crawler](https://apify.com/apify/website-content-crawler)
can crawl websites and extract text content.
```

## Code Examples

- Use backticks for file names, commands, config keys
- Prefer complete, runnable examples
- Add comments only when code isn't self-explanatory
- Match versions in examples (e.g., Dockerfile tag matches package.json version)

## Numbers & Formatting

- Thousands: comma separator ($1,000)
- Decimals: period ($9.8)
- Money: symbol before amount ($49, not 49$)
- Dates: August 5, 2024 (never 5.8.2024)
- Time: 5 PM (space before, uppercase)

## Common Mistakes

Patterns to avoid:

- "Happy scraping!" closings
- Em dashes
- Title case headings
- Gerunds in headings
- Bold for routine structure
- "Ok" (use "OK" or "okay")
- Missing "the" before "Apify platform"
- Sales language ("ultimate", "cutting-edge", "supercharge")
- Vague claims without numbers

## Reference

This guide covers writing patterns. For structural guidelines (file naming, screenshots, tutorial structure, SEO), see:

- [CONTRIBUTING.md](../../CONTRIBUTING.md) - Contribution workflow and repository standards
- [AGENTS.md](../../AGENTS.md) - Comprehensive documentation guidelines for AI assistants
- Full Apify style guide: https://www.notion.so/apify/de9fbb99dcd84665b6d3f790fc88b3b6
Comment thread
mnmkng marked this conversation as resolved.
Outdated
Comment thread
mnmkng marked this conversation as resolved.
Outdated
26 changes: 0 additions & 26 deletions .cursor/rules/file-organization.mdc

This file was deleted.

1 change: 1 addition & 0 deletions .cursor/rules/file-organization.mdc
20 changes: 0 additions & 20 deletions .cursor/rules/quality-standards.mdc

This file was deleted.

1 change: 1 addition & 0 deletions .cursor/rules/quality-standards.mdc
1 change: 1 addition & 0 deletions .cursor/rules/writing-style.mdc
Loading
Loading