Agent skill

Tutorial Writer

by FerroxLabs in FerroxLabs/wayland

Expert technical tutorial creation covering tutorial structure (goal, prerequisites, steps, verification), progressive complexity, code sample design, screenshot guidelines, common mistakes section…

Apache-2.0Auto-check passed

Install Tutorial Writer

skills CLI
$ npx skills add FerroxLabs/wayland --skill tutorial-writer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install FerroxLabs/wayland tutorial-writer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/writing/tutorial-writer .claude/skills/tutorial-writer && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
tutorial-writer
GitHub stars
608
Token cost
~3.6k tokens
SKILL.md length
530 words
Files
1
Skills in repo
1,194
Repo updated
First seen
Licence
Apache-2.0

At a glance

Expert technical tutorial creation covering tutorial structure (goal, prerequisites, steps, verification), progressive complexity, code sample design, screenshot guidelines, common mistakes section…

  • The user asks about tutorial writer
  • SKILL.md covers Overview, Tutorial Structure Framework, Progressive Complexity Design and Code Sample Design, plus 11 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Tutorial writer best practices

What it does

Tutorial Writer is an agent skill from FerroxLabs/wayland. Expert technical tutorial creation covering tutorial structure (goal, prerequisites, steps, verification), progressive complexity, code sample design, screenshot guidelines, common mistakes section, prerequisite validation, and hands-on exercises. Use when the user asks about tutorial writer, tutorial writer best practices, or needs guidance on tutorial writer implementation. Do NOT use when the user needs a different specialized skill or is asking about an unrelated technology domain.

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Wayland - The AI Agent That Perceives. Reasons. Acts. Evolves. The licence is Apache-2.0.

When your agent uses it

  • The user asks about tutorial writer
  • Tutorial writer best practices
  • Needs guidance on tutorial writer implementation
  • The user needs a different specialized skill

Example prompts

  • “/tutorial-writer”

Requirements

  • Node.js
  • Docker

What it can do on your machine

Read from SKILL.md and the folder at commit 4c030c7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Tutorial Writer loads about 3.6k tokens when it runs. Until then it costs about 127 tokens; SKILL.md has 530 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~127
When it runs · the whole SKILL.md, loaded when a task matches
~3.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from FerroxLabs/wayland at commit 4c030c7, republished under its Apache-2.0 licence (© FerroxLabs). 530 words, ~3,574 tokens.

Download SKILL.mdSave it as .claude/skills/tutorial-writer/SKILL.md (or your agent's skills folder).
name
tutorial-writer
description
Expert technical tutorial creation covering tutorial structure (goal, prerequisites, steps, verification), progressive complexity, code sample design, screenshot guidelines, common mistakes section, prerequisite validation, and hands-on exercises. Use when the user asks about tutorial writer, tutorial writer best practices, or needs guidance on tutorial writer implementation. Do NOT use when the user needs a different specialized skill or is asking about an unrelated technology domain.
license
Apache-2.0
metadata.author
foundry-skills
metadata.version
1.0.0
metadata.tags
technical-writing documentation teaching
metadata.category
writing
metadata.subcategory
technical-writing
metadata.disclaimer
none
metadata.difficulty
beginner

Tutorial Writer

Overview

This skill provides comprehensive expertise in creating technical tutorials that effectively teach developers new skills and concepts. Great tutorials respect the reader's time, build confidence through incremental success, and leave learners with both understanding and working code. This skill covers tutorial structure, progressive complexity design, code sample best practices, visual aids, error anticipation, and exercise design.

Tutorial Structure Framework

The Four-Part Structure
Every tutorial must have these four parts:

1. ORIENTATION (10% of tutorial)
   ├── What will the reader build or learn?
   ├── Why does this matter? (motivation)
   ├── What will they have at the end? (outcome preview)
   └── Estimated time to complete

2. PREREQUISITES (5% of tutorial)
   ├── Required knowledge (with links to learn)
   ├── Required software/tools (with versions)
   ├── Required accounts/API keys
   └── Verification commands to confirm readiness

# ... (condensed) ...
4. WRAP-UP (10% of tutorial)
   ├── Summary of what was built
   ├── Key concepts learned
   ├── Next steps / further reading
   └── Link to complete source code
Tutorial Header Template
markdown
# Build a Real-Time Chat App with WebSockets

Learn how to build a full-featured chat application with typing indicators,
message history, and user presence. By the end of this tutorial, you will have
a working chat app that multiple users can connect to simultaneously.

**What you will build:**

[Screenshot or GIF of the finished product]

**Time:** 45 minutes
**Difficulty:** Intermediate
**Prerequisites:** Basic JavaScript, familiarity with Node.js
**Source code:** [github.com/org/tutorial-chat-app]([reference URL])
# ... (condensed) ...
- Using the command line for basic operations
- Understanding HTTP request/response basics

If you are new to Node.js, complete the
[Introduction to Node.js]([reference URL]) first.

Progressive Complexity Design

Complexity Ladder
Progressive Complexity Pattern:

Step 1: Minimal working example (instant gratification)
  └── "Hello World" equivalent that proves the setup works

Step 2: Add the core feature (the reason for the tutorial)
  └── The single most important capability

Step 3: Handle the real world (data, errors, edge cases)
  └── Connect to real data, add error handling

Step 4: Polish (UX, performance, production concerns)
  └── Make it production-worthy

# ... (condensed) ...
  Step 1: Express server that returns "Hello World" on GET /
  Step 2: CRUD endpoints for a single resource (products)
  Step 3: Connect to PostgreSQL, add validation, error handling
  Step 4: Add authentication, pagination, rate limiting
  Step 5: Add WebSocket notifications, caching, testing
Step Writing Template
markdown
## Step 3: Connect to the Database

In this step, you will connect the API to a PostgreSQL database so that
products are persisted between server restarts.

### 3.1 Install the database client

\```shell
install via npm: pg drizzle-orm
install via npm: -D drizzle-kit
\```

### 3.2 Configure the database connection

# ... (condensed) ...
server restarts because it is stored in PostgreSQL.

> **Troubleshooting:** If you get a connection error, make sure your
> PostgreSQL server is running and the `DATABASE_URL` environment variable
> is set. See [Common Mistakes](#common-mistakes) at the end of this tutorial.

Code Sample Design

Code Sample Rules
Code Sample Best Practices:
├── Every code block must be complete and runnable
│   ├── GOOD: Full file with imports, shown in context
│   ├── BAD: Isolated snippet that cannot run standalone
│   └── If showing a diff, clearly mark added/removed lines
├── Show the file path above each code block
│   └── // src/routes/products.ts
├── Use syntax highlighting (specify language after backticks)
├── Include comments for non-obvious lines
│   ├── Comment the "why", not the "what"
│   ├── GOOD: // Pool reuses connections for better performance
│   ├── BAD: // Create a new pool
│   └── Limit to 1-2 comments per code block
├── Keep blocks under 40 lines (split longer blocks)
├── Use realistic variable names (not foo, bar, baz)
├── Use realistic data ("Wireless Headphones", not "Test Product 1")
├── Show expected output after every command
└── Provide copy button (most doc tools support this)
Diff-Style Code Updates
markdown
When modifying existing code, show what changed clearly:

Update `src/routes/products.ts` to add validation:

\```typescript
// src/routes/products.ts
import { z } from 'zod';  // Add this import

// Add this validation schema
const createProductSchema = z.object({
  name: z.string().min(1).max(200),
  price: z.string().regex(/^\d+\.\d{2}$/, 'Price must have 2 decimal places'),
});

# ... (condensed) ...

  const product = await db.insert(products).values(result.data).returning();
  res.status(201).json(product[0]);
});
\```

Screenshot Guidelines

When to Include Screenshots
Include a screenshot when:
├── The reader needs to interact with a GUI (IDE, dashboard, browser)
├── The output is visual (a rendered web page, a chart, a diagram)
├── Configuration involves a multi-step UI workflow
├── The result is hard to describe in text alone
└── You want to show "you should see this" for verification

Do NOT screenshot:
├── Terminal output (use a code block instead)
├── Code (use a code block instead)
├── Simple text that can be described in one sentence
└── Anything that changes frequently (version numbers, UI details)
Screenshot Best Practices
GuidelineDetails
AnnotationUse numbered callouts or arrows to highlight key areas
CroppingShow only the relevant portion, not the entire screen
SizeReadable at 100% zoom without scrolling horizontally
Alt textDescribe what the screenshot shows for accessibility
FormatPNG for UI, GIF/video for multi-step interactions
FreshnessDate screenshots; update when UI changes
ConsistencySame browser, theme, and window size across all screenshots
markdown
<!-- Screenshot with alt text and caption -->
![The project dashboard showing three running services with green status indicators](./images/step-3-dashboard.png)

*Figure 3: After deployment, all three services should show green status.*

Common Mistakes Section

Writing Effective Troubleshooting Content
markdown
## Common Mistakes

### "Connection refused" when starting the server

**Symptom:** `Error: connect ECONNREFUSED 127.0.0.1:5432`

**Cause:** PostgreSQL is not running or is listening on a different port.

**Fix:**
\```shell
# Check if PostgreSQL is running
pg_isready

# If not running, start it:
# ... (condensed) ...
netstat -ano | findstr :3000  # Windows

# Kill the process, or use a different port
PORT=3001 npm run dev
\```
Error Anticipation Strategy
For each step in the tutorial, ask:
├── What if a required tool is not installed?
├── What if the user is on a different OS?
├── What if a previous step was done incorrectly?
├── What if versions differ from what we tested?
├── What if there is a network/firewall issue?
├── What if permissions are wrong?
└── What if the user copied the code incorrectly?

For each anticipated error:
├── Describe the exact error message they will see
├── Explain what caused it in plain language
├── Provide a specific fix (commands, not just advice)
└── Link to more detailed help if the fix is complex

Prerequisite Validation

Automated Prerequisite Check Script
markdown
## Verify Your Environment

Run this script to check that all prerequisites are installed:

\```shell
#!shell-interpreter
# check-prerequisites.shell-cmd

echo "Checking prerequisites..."

check() {
  local name=$1
  local cmd=$2
  local min_version=$3
# ... (condensed) ...
  [PASS] Git: git version 2.43.0
  [PASS] Docker: Docker version 25.0.2

All prerequisites met. You are ready to start the tutorial.
\```

Hands-On Exercises

Exercise Design Principles
Exercise Design Rules:
├── Place exercises AFTER the concept is taught (not before)
├── Start with "modify the code you just wrote" (not "start from scratch")
├── Provide the expected result so learners can self-verify
├── Include hints for common stumbling points
├── Offer a complete solution (collapsed/linked) for self-unblocking
├── Graduate difficulty:
│   ├── Exercise 1: Apply what you just learned (repetition)
│   ├── Exercise 2: Combine two concepts (synthesis)
│   └── Exercise 3: Solve a new problem (transfer)
└── Time each exercise (include time estimates)
Exercise Template
markdown
## Exercises

### Exercise 1: Add a "categories" resource (10 minutes)

Using what you learned about creating CRUD endpoints for products,
add a new resource for product categories.

**Requirements:**
- `GET /categories` - List all categories
- `POST /categories` - Create a category (name is required)
- `GET /categories/:id` - Get a single category
- Categories should have: `id`, `name`, `description` (optional)

**Hints:**
# ... (condensed) ...

**Requirements:**
- Support `?limit=10&cursor=xxx` query parameters
- Return a `next_cursor` field when more results are available
- Default limit is 20, maximum is 100

Tutorial Testing Protocol

Before Publishing Checklist
Tutorial Testing Protocol:
├── Fresh Environment Test
│   ├── Start from a clean machine (or fresh Docker container)
│   ├── Follow every step exactly as written
│   ├── Copy-paste every command (do not type from memory)
│   └── Verify every expected output matches actual output
├── Second Person Test
│   ├── Have someone from target audience follow the tutorial
│   ├── Observe without helping (note where they get stuck)
│   ├── Ask them to think aloud (identify confusing sections)
│   └── Time how long each step takes (update estimates)
├── Platform Test
│   ├── Test on macOS, Linux, and Windows (if applicable)
│   ├── Test on minimum supported versions of tools
# ... (condensed) ...
└── Code Repository
    ├── Final code matches what the tutorial produces
    ├── Repository has a working CI build
    ├── Each major step is a tagged commit or branch
    └── README in the repo links back to the tutorial

Tutorial Quality Metrics

MetricTargetHow to Measure
Completion rate>70%Analytics (reached final step)
Time to completeWithin 1.5x estimateUser testing observation
Error rate<10% need troubleshootingSupport tickets / forum posts
Satisfaction>4.0 / 5.0End-of-tutorial survey
FreshnessUpdated within 3 monthsLast-modified date check

Production Checklist

  • Tutorial has clear goal statement and outcome preview
  • Prerequisites listed with version numbers and check commands
  • Every step has a verification point ("you should see...")
  • Code samples are complete, runnable, and syntax-highlighted
  • File paths shown above every code block
  • Common mistakes section covers top 3-5 failure points
  • Screenshots have alt text and annotations where needed
  • Exercises included with hints and solutions
  • Tutorial tested on fresh environment by someone other than the author
  • Source code repository is available and matches tutorial output
  • Estimated time is accurate (tested with real users)
  • All links are valid and will remain stable
Show full SKILL.md (198 more words)Show less

When to Use

Use this skill when:

  • Designing or implementing tutorial writer solutions
  • Reviewing or improving existing tutorial writer approaches
  • Making architectural or implementation decisions about tutorial writer
  • Learning tutorial writer patterns and best practices
  • Troubleshooting tutorial writer-related issues

Do NOT use this skill when:

  • The question is about a fundamentally different technology domain
  • A more specific sibling skill covers the exact topic needed
  • The user needs a complete hands-on tutorial rather than expert guidance

Output Format

markdown
# Tutorial Writer Analysis

## Context Assessment
[Situation summary and constraints]

## Recommended Approach
[Primary recommendation with rationale]

## Implementation Steps
1. [Step with specific details]
2. [Step with specific details]
3. [Step with specific details]

## Trade-offs and Considerations
- [Key trade-off 1]
- [Key trade-off 2]

## Next Steps
- [Immediate action item]
- [Follow-up action item]

Example

Input: "Help me implement tutorial writer for a medium-scale production application"

Output: A structured analysis covering current state assessment, recommended tutorial writer approach with specific patterns, implementation roadmap with milestones, and risk mitigation strategies tailored to the application scale and constraints.

Edge Cases

  • Legacy system integration: When tutorial writer must coexist with legacy approaches, provide a gradual migration path rather than a complete rewrite
  • Scale mismatch: When the solution complexity exceeds the project scale, recommend a simpler approach and note when to revisit
  • Team skill gaps: When the team lacks experience with the recommended approach, include learning resources and simpler alternatives
  • Conflicting requirements: When constraints conflict (e.g., performance vs. maintainability), explicitly state the trade-off and recommend based on stated priorities

© FerroxLabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in src/process/resources/skills-library/bodies/skills/writing/tutorial-writer of FerroxLabs/wayland.

Open the folder on GitHubat commit 4c030c7

Compare with similar skills

Tutorial Writer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Tutorial Writer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Tutorial Writer this skillFerroxLabs/wayland608—~3.6kAutomated safety check: PassApache-2.0
Goalscodewhale-hq/Codewhale41k—~273Automated safety check: PassMIT
Goal Prompt Writertrailofbits/skills7.4k—~1.5kAutomated safety check: NotesCC-BY-SA-4.0
How To Tutorial WriterAffitor/affiliate-skills698—~3.6kAutomated safety check: PassMIT
Iep Goal Writermohitagw15856/pm-claude-skills1.4k—~777Automated safety check: PassMIT
Tutorial Creationvivy-yi/xiaohongshu-skills471—~5.6kAutomated safety check: PassNone

Similar skills

  • Goals

    codewhale-hq/Codewhale

    Set, review, and update the user's goals. An agent skill from codewhale-hq/Codewhale.

    41k GitHub stars~273 tokensUpdated today
    Auto-check passed
  • Goal Prompt Writer

    trailofbits/skills

    Official

    Drafts a single-line /goal command for Claude Code or Codex goal mode, built around a checkable end state, a stated verification command and a stop condition.

    7.4k GitHub stars~1.5k tokensUpdated 5 days ago
    Agent WorkflowsAuto-check: notes
  • How To Tutorial Writer

    Affitor/affiliate-skills

    Write how-to guides and tutorials that naturally integrate affiliate product recommendations.

    698 GitHub stars~3.6k tokensUpdated 22 days ago
    Writing & ContentAuto-check passed
  • Iep Goal Writer

    mohitagw15856/pm-claude-skills

    Write measurable IEP goals and matching accommodations for a K-12 student with an IEP or 504 plan.

    1.4k GitHub stars~777 tokensUpdated yesterday
    Auto-check passed
  • Tutorial Creation

    vivy-yi/xiaohongshu-skills

    A skill your agent uses when creating educational tutorial content for Xiaohongshu, teaching skills or processes step-by-step, creating how-to guides, or structuring instructional content for…

    471 GitHub stars~5.6k tokensUpdated 8 mo ago
    Writing & ContentAuto-check passed
  • Best practices for Remotion - Video creation in React. An agent skill from affaan-m/ECC.

    274k GitHub starsUsed in 2 repos~910 tokens
    Media & CreativeAuto-check passed

More from FerroxLabs/wayland

All 1,194 skills in this repo
  • Star Office Helper

    FerroxLabs/wayland

    Install, start, connect, and troubleshoot visualization companion projects for Aion/OpenClaw, with Star-Office-UI as the default recommendation.

    608 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check: notes
  • Openclaw Setup

    FerroxLabs/wayland

    OpenClaw usage expert: Helps you install, deploy, configure, and use OpenClaw personal AI assistant.

    608 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Tvcontrol Setup

    FerroxLabs/wayland

    Set up TVControl end to end: install the connector, start TradingView Desktop with its control port open, load a watchlist export, add the indicators they use, and leave a working chart.

    608 GitHub stars~5.7k tokensUpdated yesterday
    Auto-check passed
  • Ab Testing Specialist

    FerroxLabs/wayland

    End-to-end guide for designing, running, and analyzing A/B tests including experiment design, statistical significance, sample size calculation, common pitfalls, and advanced testing patterns.

    608 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Academic Writer

    FerroxLabs/wayland

    Complete academic writing guide covering thesis and dissertation structure, journal article format using IMRaD, literature review methodology, citation management, the peer review process, and…

    608 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check passed
  • Accessibility Auditor

    FerroxLabs/wayland

    Web accessibility expertise covering WCAG 2.2 conformance, audit methodology, ARIA patterns, keyboard navigation, screen reader testing, focus management, form accessibility, and automated vs manual…

    608 GitHub stars~4.1k tokensUpdated yesterday
    Auto-check passed

Questions about Tutorial Writer

What does Tutorial Writer do?

Expert technical tutorial creation covering tutorial structure (goal, prerequisites, steps, verification), progressive complexity, code sample design, screenshot guidelines, common mistakes section…. Tutorial Writer is an agent skill from FerroxLabs/wayland. Expert technical tutorial creation covering tutorial structure (goal, prerequisites, steps, verification), progressive complexity, code sample design, screenshot guidelines, common mistakes section, prerequisite validation, and hands-on exercises.

When should I use Tutorial Writer?

Tutorial Writer fits situations like: the user asks about tutorial writer; tutorial writer best practices; needs guidance on tutorial writer implementation; the user needs a different specialized skill.

How do I install Tutorial Writer in Claude Code?

Run `npx skills add FerroxLabs/wayland --skill tutorial-writer -a claude-code`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/writing/tutorial-writer in FerroxLabs/wayland) into .claude/skills/tutorial-writer in your project. Claude Code loads it when a task matches its description.

How do I install Tutorial Writer in Codex?

Run `npx skills add FerroxLabs/wayland --skill tutorial-writer -a codex`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/writing/tutorial-writer in FerroxLabs/wayland) into .agents/skills/tutorial-writer in your project. Codex loads it when a task matches its description.

Can I use Tutorial Writer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add FerroxLabs/wayland --skill tutorial-writer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tutorial-writer, .gemini/skills/tutorial-writer, .github/skills/tutorial-writer and .opencode/skills/tutorial-writer in your project.

What does Tutorial Writer need to run?

SKILL.md names no scripts, command-line tools or credentials: Tutorial Writer is instructions for the agent only. Our summary lists: Node.js; Docker.

Does Tutorial Writer access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Tutorial Writer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Tutorial Writer use?

Tutorial Writer is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Tutorial Writer use?

About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Tutorial Writer?

Skills that share tags, products or a category with Tutorial Writer: Goals (codewhale-hq/Codewhale, 41k stars), Goal Prompt Writer (trailofbits/skills, 7.4k stars), How To Tutorial Writer (Affitor/affiliate-skills, 698 stars) and Iep Goal Writer (mohitagw15856/pm-claude-skills, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Tutorial Writer?

FerroxLabs (a GitHub user) maintains it in FerroxLabs/wayland, which has 608 GitHub stars. The repository holds 1,194 skills in this directory. The repository was last updated on October 6, 2026.

Source: FerroxLabs/wayland on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.