Files
dotnet__skills/.github/workflows/markdown-linter.md
Amaury Levé c6cf65c7c3 Add Markdown Linter agentic workflow (#582)
Adds a new agentic workflow (.github/workflows/markdown-linter.md) that
runs Super Linter on weekdays at 2 PM UTC and on manual dispatch. The
agent analyzes linter output and creates GitHub issues with categorized
findings, severity breakdown, and fix recommendations.

Adapted from https://github.com/githubnext/agentics/blob/main/workflows/markdown-linter.md
with repo-specific conventions: PAT pool rotation, fork protection,
pinned action SHAs, scoped bash tools, and safe-outputs.
2026-04-23 13:57:45 +00:00

7.3 KiB

name, description, on, if, jobs, engine, permissions, tools, safe-outputs, network, timeout-minutes, steps
name description on if jobs engine permissions tools safe-outputs network timeout-minutes steps
Markdown Linter Runs Markdown quality checks using Super Linter and creates issues for violations found across the repository.
workflow_dispatch schedule steps
cron
0 14 * * 1-5
uses name with
actions/checkout@de0fac2e45 Checkout the select-copilot-pat action folder
persist-credentials sparse-checkout sparse-checkout-cone-mode fetch-depth
false .github/actions/select-copilot-pat true 1
id name uses env
select-copilot-pat Select Copilot token from pool ./.github/actions/select-copilot-pat
SECRET_0 SECRET_1 SECRET_2 SECRET_3 SECRET_4 SECRET_5 SECRET_6 SECRET_7
${{ secrets.COPILOT_GITHUB_TOKEN }} ${{ secrets.COPILOT_GITHUB_TOKEN_2 }} ${{ secrets.COPILOT_GITHUB_TOKEN_3 }} ${{ secrets.COPILOT_GITHUB_TOKEN_4 }} ${{ secrets.COPILOT_GITHUB_TOKEN_5 }} ${{ secrets.COPILOT_GITHUB_TOKEN_6 }} ${{ secrets.COPILOT_GITHUB_TOKEN_7 }} ${{ secrets.COPILOT_GITHUB_TOKEN_8 }}
${{ !(github.event_name == 'schedule' && github.event.repository.fork) }}
pre-activation super_linter
outputs
copilot_pat_number
${{ steps.select-copilot-pat.outputs.copilot_pat_number }}
runs-on permissions steps
ubuntu-latest
contents packages statuses
read read write
name uses with
Checkout repository actions/checkout@de0fac2e45
fetch-depth persist-credentials
0 false
name uses id env
Super-linter super-linter/super-linter@61abc07d75 super-linter
GITHUB_TOKEN CREATE_LOG_FILE LOG_FILE DEFAULT_BRANCH ENABLE_GITHUB_ACTIONS_STEP_SUMMARY VALIDATE_MARKDOWN VALIDATE_ALL_CODEBASE
${{ secrets.GITHUB_TOKEN }} true super-linter.log main true true true
name id run
Check for linting issues check-results if [ -f "super-linter.log" ] && [ -s "super-linter.log" ]; then if grep -qE "ERROR|WARN|FAIL" super-linter.log; then echo "needs-linting=true" >> "$GITHUB_OUTPUT" else echo "needs-linting=false" >> "$GITHUB_OUTPUT" fi else echo "needs-linting=false" >> "$GITHUB_OUTPUT" fi
name if uses with
Upload super-linter log always() actions/upload-artifact@043fb46d1a
name path retention-days
super-linter-log super-linter.log 7
id env
copilot
COPILOT_GITHUB_TOKEN
${{ case(needs.pre_activation.outputs.copilot_pat_number == '0', secrets.COPILOT_GITHUB_TOKEN, needs.pre_activation.outputs.copilot_pat_number == '1', secrets.COPILOT_GITHUB_TOKEN_2, needs.pre_activation.outputs.copilot_pat_number == '2', secrets.COPILOT_GITHUB_TOKEN_3, needs.pre_activation.outputs.copilot_pat_number == '3', secrets.COPILOT_GITHUB_TOKEN_4, needs.pre_activation.outputs.copilot_pat_number == '4', secrets.COPILOT_GITHUB_TOKEN_5, needs.pre_activation.outputs.copilot_pat_number == '5', secrets.COPILOT_GITHUB_TOKEN_6, needs.pre_activation.outputs.copilot_pat_number == '6', secrets.COPILOT_GITHUB_TOKEN_7, needs.pre_activation.outputs.copilot_pat_number == '7', secrets.COPILOT_GITHUB_TOKEN_8, secrets.COPILOT_GITHUB_TOKEN) }}
contents actions issues
read read read
cache-memory edit bash
true
cat
grep
head
tail
find
ls
wc
sort
uniq
date
create-issue noop
expires title-prefix labels max
2d [linter]
automation
code-quality
1
report-as-issue
false
allowed
defaults
15
name uses with
Download super-linter log actions/download-artifact@3e5f45b2cf
name path
super-linter-log /tmp/gh-aw/

Markdown Quality Report

You are an expert documentation quality analyst. Your task is to analyze the Super Linter Markdown output and create a comprehensive issue report for the repository maintainers.

Context

  • Repository: ${{ github.repository }}
  • Triggered by: @${{ github.actor }}
  • Run ID: ${{ github.run_id }}

Your Task

  1. Read the linter output from /tmp/gh-aw/super-linter.log using the bash tool
  2. Analyze the findings:
    • Categorize errors by severity (critical, high, medium, low)
    • Identify patterns in the errors
    • Determine which errors are most important to fix first
    • Note: This workflow only validates Markdown files
  3. Create a detailed issue with the following structure:

Issue Title

Use format: "Markdown Quality Report - [Date] - [X] issues found"

Issue Body Structure

## 🔍 Markdown Linter Summary

**Date**: [Current date]
**Total Issues Found**: [Number]
**Run ID**: ${{ github.run_id }}

## 📊 Breakdown by Severity

- **Critical**: [Count and brief description]
- **High**: [Count and brief description]
- **Medium**: [Count and brief description]
- **Low**: [Count and brief description]

## 📁 Issues by Category

### [Category/Rule Name]
- **File**: `path/to/file`
  - Line [X]: [Error description]
  - Suggested fix: [How to resolve]

[Repeat for other categories]

## 🎯 Priority Recommendations

1. [Most critical issue to address first]
2. [Second priority]
3. [Third priority]

## 📋 Full Linter Output

<details>
<summary>Click to expand complete linter log</summary>

[Include the full linter output here]


</details>

## 🔗 References

- [Link to workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
- [Super Linter Documentation](https://github.com/super-linter/super-linter)

Important Guidelines

  • Be concise but thorough: Focus on actionable insights
  • Prioritize issues: Not all linting errors are equal
  • Provide context: Explain why each type of error matters for documentation quality
  • Suggest fixes: Give practical recommendations
  • Use proper formatting: Make the issue easy to read and navigate
  • If no errors found: Call noop celebrating clean markdown

Important: Always call exactly one safe-output tool before finishing (create-issue or noop).

{"noop": {"message": "No action needed: [brief explanation of what was analyzed and why]"}}