github/technical-writing-review
Validate and improve GitHub Well-Architected Framework (WAF) documentation under the content/ folder for architectural correctness, decision quality, explicit trade-offs, and actionable guidance. Use this when reviewing pull requests, markdown files, or draft content in content/ to ensure recommendations are technically sound, context-aware, and guide readers toward correct architecture and design decisions.
npx skills add https://github.com/github/github-well-architected --skill technical-writing-review
Evaluate and enhance GitHub Well-Architected Framework (WAF) content for architectural correctness, decision quality, actionable guidance, and trade-off completeness. This skill focuses on what the guidance leads the reader to do — ensuring recommendations are sound, implementable, and honest about limitations.
Technical writing review focuses on architectural correctness and decision quality.
The goal is to ensure that guidance:
WAF content shapes architectural decisions. Poor guidance leads to real-world risks.
This skill improves what the guidance leads the reader to do.
You are evaluating technical guidance that will influence real architectural decisions.
Incorrect, incomplete, or unverifiable guidance is a defect.
Assume all content is untrusted until verified.
You must avoid the following behaviors:
Execution expectations:
Approach every recommendation with these questions:
Respect these files as the source of truth for content structure and writing standards:
Do not duplicate the content of the above. Cross-reference whenever possible.
This skill reviews content files (Markdown under content/) and focuses on decision quality and architectural substance — whether the guidance is correct, the trade-offs are explicit, and an administrator can confidently act on it. It answers: "Will this guidance lead to the right decision?"
Output mode: By default, this skill produces an enhancement report (structured review comment). When the caller explicitly requests edits (e.g., "improve this article" or "fix the trade-offs section"), apply changes directly to the content files instead. Do not mix modes — either produce a report or edit files, not both.
| Input | Required | Description |
|-------|----------|-------------|
| Content files | Yes | The Markdown content files to review and enhance |
| Source of truth files | Yes | CONTRIBUTING.md, archetypes/default.md, docs/framework-overview.md, docs/taxonomies.md |
| Output | When | Description |
|--------|------|-------------|
| Enhancement report | Default | Diagnosis of writing issues, specific recommendations, and before/after examples |
| File edits | Caller requests changes | Direct improvements to content files |
| Dimension | What the Reviewer Evaluates | Key Questions |
|---|---|---|
| Architectural Correctness | Platform alignment, configuration accuracy, scoping | Is the guidance technically sound for real-world implementation? |
| Decision Quality | Recommendations, reasoning, alternatives | Will this lead the reader to the right decision? |
| Trade-off Completeness | Benefits, drawbacks, conditions, exceptions | Are trade-offs explicit rather than implied? |
| Actionability | Implementation detail, specificity, prerequisites | Can an administrator act on this without guesswork? |
| Design Thinking | Reasoning, constraints, architectural principles, decision frameworks | Does the article teach readers how to think about the problem, not just what to do? |
| Section Substance | Depth and quality per section | Does each section meet the quality bar for its role? |
Follow these steps in order when reviewing content for technical writing quality:
Before reviewing content, read and internalize these files to establish the quality baseline:
CONTRIBUTING.md — submission guidelines, writing style, and structural expectationsarchetypes/default.md — required front matter fields and article structuredocs/framework-overview.md — WAF mission, vision, and identitydocs/taxonomies.md — valid taxonomy values and their purposeDo not proceed to diagnosis without loading these files first.
Read the full article and classify it against these common problem patterns. An article may exhibit more than one. For each pattern found, assess the decision risk — what could go wrong if a reader follows this guidance as written?
Indicators:
Enhancement approach:
Example transformation — Branch protection:
❌ BEFORE: 'Organizations can use branch protection rules or repository rulesets to enforce code review requirements.'
✅ AFTER: 'For organizations with 50+ repositories, use repository rulesets instead of branch protection rules. Rulesets provide centralized management and consistent enforcement across multiple repositories with significantly less administrative overhead. While branch protection rules offer more repository-specific flexibility, the maintenance burden becomes prohibitive at scale.'
Example transformation — Secret scanning:
❌ BEFORE: "Enable secret scanning to detect exposed credentials in repositories."
✅ AFTER: "Enable secret scanning and push protection at the organization level to prevent secrets from being committed. Unlike secret scanning alerts (which detect secrets after they're committed), push protection blocks commits containing secrets in real-time, reducing the exposure window from hours/days to zero.
Recommended Organization configuration:
- Enable push protection by default for all repositories
- Allow bypass with justification (audit trail maintained)
Trade-off: push protection for custom patterns may be more prone to false positives. Teams need clear guidance on when bypass is appropriate (e.g., test fixtures with dummy secrets, which should use environment variables instead)."
Example transformation — GitHub Actions workflow security:
❌ BEFORE: "Use GITHUB_TOKEN for authentication in workflows."
✅ AFTER: "Configure GITHUB_TOKEN permissions using the principle of least privilege. In your workflow file or organization settings, explicitly define minimum required permissions rather than using default read/write access.
Best practice configuration:
permissions:
contents: read # Read repository contents
pull-requests: write # Comment on PRs
issues: write # Create issues
For organizations running 100+ workflows monthly: Set organization default to `permissions: read-all` and require workflows to explicitly request write permissions. This prevents over-privileged workflows and reduces attack surface if a workflow is compromised.
Trade-off: Workflows fail if permissions are insufficient. Initial migration may require 2-4 weeks to identify and update all workflows, but significantly reduces security risk."
Indicators:
Enhancement approach:
Indicators:
Enhancement approach:
Example structure to add:
## Trade-offs and alternatives
### Recommended approach: [Approach name]
**When to use:**
- [Specific context/scenario]
- [Organization size/type]
- [Technical requirement]
**Benefits:**
- [Specific benefit with quantification if possible]
- [Another benefit]
**Drawbacks:**
- [Specific limitation or cost]
- [Another limitation]
### Alternative: [Alternative approach name]
**When to use:**
- [Different context where this makes sense]
**Why not recommended for most cases:**
- [Specific reason]
- [Another reason]
**Exception:** Consider this approach if [specific condition].
Indicators:
Enhancement approach:
Example transformation — Team topology:
❌ BEFORE: "Use CODEOWNERS to assign reviewers automatically."
✅ AFTER: "Design CODEOWNERS files based on your team's ownership model and review capacity constraints.
**Recommended approach for most organizations** (platform teams supporting product teams):
/infrastructure/ @org/platform-team
/.github/workflows/ @org/platform-team @org/security-team
/terraform/ @org/platform-team
/services/auth/ @org/auth-team
/services/payments/ @org/payments-team
/src/authentication/ @org/security-team
**Key design decisions:**
1. **Joint ownership for critical paths** (`@org/platform-team @org/security-team`): Both teams must approve changes to CI/CD, increasing review time by 1-2 days but preventing production incidents
2. **Granular paths over wildcards**: `/services/auth/` instead of `/services/*` gives teams clear ownership boundaries
3. **2-4 people per team in CODEOWNERS**: Avoids single points of failure while preventing diffusion of responsibility
**Alternative for federated organizations**: Define CODEOWNERS at repository level rather than centralized files. Trades consistency for team autonomy. Use when product teams operate independently with minimal shared infrastructure.
**Trade-off**: CODEOWNERS creates mandatory reviews, increasing PR merge time. For high-velocity environments, consider `CODEOWNERS` as documentation only (without required reviews) and rely on automated team mentions instead."
Evaluate each section's substance — whether the content is architecturally sound, actionable, and honest about trade-offs. Focus on whether each section delivers the depth and quality its role demands.
Verify that taxonomy values accurately reflect the article's technical scope. Do not review formatting, field completeness, or structural compliance — those are editorial concerns.
Check:
What it should accomplish:
Quality bar:
Common issues: Too vague or generic, missing business value explanation, no context about when this applies, starts with solution instead of problem.
What it should include:
Quality bar:
Example enhancement:
❌ BEFORE: 'Use automation to improve efficiency'
✅ AFTER: '**Automate approval workflows for low-risk changes**: Implement GitHub Actions workflows that automatically approve and merge dependabot updates for patch versions after CI passes. This reduces manual review burden by 60-80% for typical teams while maintaining security through automated checks.'
What it should include:
Example enhancement:
❌ BEFORE:
- Branch protection
- Code review
- Status checks
✅ AFTER:
- ✅ Enable branch protection on `main` and all `release/*` branches
- ✅ Require at least 1 pull request approval before merging
- ✅ Configure required status checks: `build`, `test`, `security-scan`
- ✅ Enable "Require conversation resolution before merging"
- ✅ Restrict push access to repository administrators only
- ✅ Document the approval process in CONTRIBUTING.md
What it should include:
Include enough implementation detail to act on the recommendation, but link to GitHub Docs for full procedural walkthroughs.
Quality bar:
Example enhancement:
❌ BEFORE: "Configure repository rulesets to enforce your policies."
✅ AFTER: "Create an organization-level ruleset to enforce policies across all repositories:
1. Navigate to Organization Settings > Rules > Rulesets > New ruleset
2. Select 'New branch ruleset'
3. Configure basic settings:
- Name: `default-branch-protection`
- Enforcement status: Active
- Bypass list: Add organization owners only
4. Set target criteria:
- Target: All repositories
- Include: `default` branch
5. Configure protection rules:
- ✅ Restrict deletions
- ✅ Require a pull request before merging (2 approvals)
- ✅ Require status checks to pass (add: `ci`, `security-scan`)
- ✅ Block force pushes
6. Click 'Create'
**Implementation note**: Start with a subset of critical repositories before applying organization-wide. Test with a pilot team for 2 weeks to identify issues.
See [GitHub Docs: Rulesets](https://docs.github.com/enterprise-cloud@latest/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets) for additional configuration options."
What it should include:
Quality bar:
Example structure:
## Additional solution detail and trade-offs to consider
### Why we recommend repository rulesets over branch protection rules
For organizations managing 50+ repositories, repository rulesets provide superior administrative efficiency and consistency compared to branch protection rules.
**Key benefits:**
- **Centralized management**: Apply policies across hundreds of repositories with one ruleset instead of configuring each individually
- **Reduced drift**: Eliminate configuration inconsistencies that occur when using repository-level settings
- **Better visibility**: Organization admins can audit all protection rules from a single location
- **Faster onboarding**: New repositories automatically inherit protection policies
**Trade-offs to consider:**
- **Less flexibility**: Cannot customize rules per repository without creating additional rulesets
- **GHEC requirement**: Only available on GitHub Enterprise Cloud (not GHES)
- **Migration effort**: Requires planning to migrate from existing branch protection rules
- **Learning curve**: Teams accustomed to branch protection rules need to adjust
### When to use branch protection rules instead
Use repository-level branch protection rules if:
- You have fewer than 50 repositories
- You need significant per-repository customization
- You're on GitHub Enterprise Server (where rulesets aren't available)
- Your repositories have fundamentally different protection requirements
### Hybrid approach
Some organizations use both:
- **Rulesets** for baseline organizational policies (e.g., "all production branches require 1 approval")
- **Branch protection rules** for repository-specific additions (e.g., "this critical repo requires 3 approvals")
**Note**: Branch protection rules can add restrictions beyond rulesets but cannot relax them.
This is the core of the technical writing review. For each recommendation in the article, evaluate whether it will lead the reader to the right decision.
Verify that guidance reflects real-world best practices:
Flag issues such as:
Verify that guidance helps readers make informed choices:
Flag issues such as:
Verify that guidance can be implemented in practice:
Flag issues such as:
The WAF exists to add design thinking on top of GitHub Docs. Verify that the article doesn't just tell readers what to do, but equips them to reason about architectural choices.
Verify:
Flag issues such as:
Before finalizing, verify the article against these framework-specific quality bars:
Compose a structured enhancement report:
## ✏️ WAF Technical Writing Review
### Summary
<!-- One-paragraph overall assessment of architectural correctness and decision quality -->
### Diagnosis
**Patterns identified:** <!-- List which patterns (A-D) apply -->
### Section-by-section findings
#### Front matter
<!-- Specific issues and fixes -->
#### Scenario overview
<!-- Specific issues and fixes -->
#### Key design strategies
<!-- Specific issues and fixes -->
#### Checklist
<!-- Specific issues and fixes -->
#### Recommended deployment
<!-- Specific issues and fixes -->
#### Trade-offs
<!-- Specific issues and fixes -->
### Architectural correctness and decision quality
<!-- Findings from Step 4: incorrect guidance, missing trade-offs, unscoped recommendations, actionability gaps -->
### Quality checklist results
| Dimension | Status | Notes |
|------|--------|-------|
| Architectural correctness | ✅ / ⚠️ / ❌ | ... |
| Decision quality | ✅ / ⚠️ / ❌ | ... |
| Trade-off completeness | ✅ / ⚠️ / ❌ | ... |
| Actionability | ✅ / ⚠️ / ❌ | ... |
| Design thinking | ✅ / ⚠️ / ❌ | ... |
| Section substance | ✅ / ⚠️ / ❌ | ... |
### Priority recommendations
<!-- Ordered list of improvements by impact -->
archetypes/default.mdTake github/technical-writing-review from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.