mirror of
https://github.com/dotnet/skills.git
synced 2026-09-20 09:49:54 +08:00
Fix markdownlint CI workflow (startup_failure since inception) (#629)
This commit is contained in:
@@ -114,4 +114,4 @@ Use the following comment when closing a stale pull request (as the `body` of `c
|
||||
|
||||
> This pull request has been automatically closed because it has been open for more than 30 days with no recent activity.
|
||||
>
|
||||
> If you believe this work is still relevant, please feel free to reopen or create a new pull request. Thank you for your contribution!
|
||||
> If you believe this work is still relevant, please feel free to reopen or create a new pull request. Thank you for your contribution!
|
||||
|
||||
@@ -140,7 +140,7 @@ Invoke the following **three inline sub-agents** (`task` tool, `agent_type: "gen
|
||||
The sub-agent prompt is:
|
||||
|
||||
> You are a senior engineering planning assistant. You will receive a planning brief about a GitHub issue in the dotnet/skills repository.
|
||||
>
|
||||
>
|
||||
> Produce a structured plan with the following sections:
|
||||
> - **Problem statement**: one-sentence summary of the root cause
|
||||
> - **Proposed solution**: what changes to make and why
|
||||
@@ -148,7 +148,7 @@ The sub-agent prompt is:
|
||||
> - **Risk assessment**: what could go wrong, edge cases, scope creep
|
||||
> - **Alternative approaches**: at least one alternative considered and why it was rejected
|
||||
> - **Confidence**: High / Medium / Low with rationale
|
||||
>
|
||||
>
|
||||
> Be thorough and precise. Focus only on the information provided in the brief.
|
||||
|
||||
### 4c. Review and synthesize
|
||||
@@ -227,4 +227,4 @@ Add a comment to the issue with your investigation results:
|
||||
- If you create a PR, keep the change minimal and well-scoped
|
||||
- Do NOT make speculative changes — only implement fixes you are confident about
|
||||
- Do NOT communicate directly with users outside of the issue comment
|
||||
- If the issue is ambiguous, err on the side of documenting findings rather than implementing a potentially wrong fix
|
||||
- If the issue is ambiguous, err on the side of documenting findings rather than implementing a potentially wrong fix
|
||||
|
||||
@@ -24,16 +24,33 @@ jobs:
|
||||
persist-credentials: false
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get changed Markdown files
|
||||
uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96 # v47.0.6
|
||||
id: changed-files
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
files: "**/*.md"
|
||||
separator: ","
|
||||
node-version: 'lts/*'
|
||||
|
||||
- name: Detect lint scope
|
||||
id: scope
|
||||
run: |
|
||||
# If config or workflow changed, lint all .md files; otherwise lint only changed .md files
|
||||
CONFIG_CHANGED=$(git diff --name-only origin/${{ github.base_ref }}...HEAD -- '.markdownlint-cli2.jsonc' '.github/workflows/markdownlint.yml')
|
||||
if [ -n "$CONFIG_CHANGED" ]; then
|
||||
echo "mode=all" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
FILES=$(git diff --name-only --diff-filter=ACMR origin/${{ github.base_ref }}...HEAD -- '*.md' | tr '\n' ' ')
|
||||
echo "files=$FILES" >> "$GITHUB_OUTPUT"
|
||||
if [ -n "$FILES" ]; then
|
||||
echo "mode=changed" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "mode=none" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: Run markdownlint
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
uses: DavidAnson/markdownlint-cli2-action@ce4853d43830c74c1753b39f3cf40f71c2031eb9 # v23
|
||||
with:
|
||||
globs: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
separator: ","
|
||||
if: steps.scope.outputs.mode != 'none'
|
||||
run: |
|
||||
if [ "${{ steps.scope.outputs.mode }}" = "all" ]; then
|
||||
npx markdownlint-cli2 "**/*.md"
|
||||
else
|
||||
npx markdownlint-cli2 ${{ steps.scope.outputs.files }}
|
||||
fi
|
||||
|
||||
@@ -13,18 +13,63 @@
|
||||
// MD013 - Line length: disable because skill files and docs routinely have long lines
|
||||
"MD013": false,
|
||||
|
||||
// MD001 - Heading increment: disable because reference files use ### without preceding ##
|
||||
"MD001": false,
|
||||
|
||||
// MD007 - Unordered list indentation: disable because skills use varied nesting depths
|
||||
"MD007": false,
|
||||
|
||||
// MD014 - Dollar signs before commands: disable because $ prompts are conventional
|
||||
"MD014": false,
|
||||
|
||||
// MD022 - Blanks around headings: disable because skills use tight heading-to-content spacing
|
||||
"MD022": false,
|
||||
|
||||
// MD024 - Multiple headings with the same content: allow siblings with same text
|
||||
"MD024": {
|
||||
"siblings_only": true
|
||||
},
|
||||
|
||||
// MD026 - Trailing punctuation in heading: disable because headings may end with ? or :
|
||||
"MD026": false,
|
||||
|
||||
// MD028 - Blank line inside blockquote: disable because skills use spaced blockquotes
|
||||
"MD028": false,
|
||||
|
||||
// MD029 - Ordered list item prefix: disable because skills use incremental numbering
|
||||
"MD029": false,
|
||||
|
||||
// MD031 - Blanks around fences: disable because skills embed code blocks tightly
|
||||
"MD031": false,
|
||||
|
||||
// MD032 - Blanks around lists: disable because reference files use tight list formatting
|
||||
"MD032": false,
|
||||
|
||||
// MD033 - Inline HTML: allow specific elements commonly used in docs
|
||||
"MD033": {
|
||||
"allowed_elements": ["br", "details", "summary", "img", "a", "sub", "sup"]
|
||||
"allowed_elements": ["br", "char", "details", "summary", "img", "a", "sub", "sup", "T"]
|
||||
},
|
||||
|
||||
// MD034 - Bare URLs: disable because reference files use bare URLs on Source: lines
|
||||
"MD034": false,
|
||||
|
||||
// MD036 - Emphasis used instead of heading: disable because skills use bold/italic sub-labels
|
||||
"MD036": false,
|
||||
|
||||
// MD040 - Fenced code language: disable because many code blocks are generic output/pseudocode
|
||||
"MD040": false,
|
||||
|
||||
// MD041 - First line in a file should be a top-level heading:
|
||||
// Disable because SKILL.md files start with YAML frontmatter
|
||||
"MD041": false
|
||||
"MD041": false,
|
||||
|
||||
// MD056 - Table column count: disable because some tables intentionally vary column spans
|
||||
"MD056": false,
|
||||
|
||||
// MD058 - Tables surrounded by blank lines: disable for same reasons as MD031/MD032
|
||||
"MD058": false,
|
||||
|
||||
// MD060 - Table column style: disable because skills use compact pipe-delimited tables
|
||||
"MD060": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ After identifying the task type, select the right library layer. These libraries
|
||||
- Agentic loops that iterate until a goal is met
|
||||
- Multi-agent collaboration with handoff protocols
|
||||
- Graph-based or durable workflows
|
||||
|
||||
|
||||
Do **not** implement these patterns by hand with `IChatClient` — the Agent Framework provides iteration limits, observability, and tool dispatch that are error-prone to reimplement.
|
||||
|
||||
4. **Add Copilot SDK only when building Copilot extensions.** Use `GitHub.Copilot.SDK` when the goal is to build a custom agent or tool that runs inside the GitHub Copilot platform (CLI, IDE, or Copilot Chat). This is not a general-purpose LLM orchestration library — it is specifically for Copilot extensibility.
|
||||
|
||||
@@ -48,7 +48,7 @@ Scan the code for signals that indicate which pattern categories to check. If re
|
||||
| Signal in Code | Topic |
|
||||
|----------------|-------|
|
||||
| `async`, `await`, `Task`, `ValueTask` | Async patterns |
|
||||
| `Span<`, `Memory<`, `stackalloc`, `ArrayPool`, `string.Substring`, `.Replace(`, `.ToLower()`, `+=` in loops, `params ` | Memory & strings |
|
||||
| `Span<`, `Memory<`, `stackalloc`, `ArrayPool`, `string.Substring`, `.Replace(`, `.ToLower()`, `+=` in loops, `params` | Memory & strings |
|
||||
| `Regex`, `[GeneratedRegex]`, `Regex.Match`, `RegexOptions.Compiled` | Regex patterns |
|
||||
| `Dictionary<`, `List<`, `.ToList()`, `.Where(`, `.Select(`, LINQ methods, `static readonly Dictionary<` | Collections & LINQ |
|
||||
| `JsonSerializer`, `HttpClient`, `Stream`, `FileStream` | I/O & serialization |
|
||||
|
||||
@@ -46,7 +46,6 @@ When using `printSource: true`, ensure the benchmark project emits PDB files so
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
```
|
||||
|
||||
|
||||
### ThreadingDiagnoser
|
||||
|
||||
`[ThreadingDiagnoser]` (CLI: `--threading`, Config: `.AddDiagnoser(ThreadingDiagnoser.Default)`) — adds `Completed Work Items` and `Lock Contentions` columns.
|
||||
@@ -67,7 +66,6 @@ Produces: `.nettrace` and `.speedscope.json` files. By default (attribute/config
|
||||
|
||||
**CLI note:** `--profiler EP` uses `CpuSampling` with `performExtraBenchmarksRun: false` — profiling is attached to normal measurement runs (no extra iteration, results include profiler overhead, no way to select a different profile). Use the attribute or config API for full control.
|
||||
|
||||
|
||||
### HardwareCounters (Windows only, requires elevation)
|
||||
|
||||
| Surface | Usage |
|
||||
@@ -82,7 +80,6 @@ Available counters include: `TotalCycles`, `InstructionRetired`, `CacheMisses`,
|
||||
|
||||
Requires: Windows, elevated (admin) process, and ETW support. Not available on all hardware.
|
||||
|
||||
|
||||
## Statistical output
|
||||
|
||||
### Default columns
|
||||
|
||||
@@ -332,4 +332,4 @@ When multiple evaluations share an output path, compare these global properties
|
||||
|
||||
## Testing Fixes
|
||||
|
||||
After making changes to fix path clashes, clean and rebuild to verify. See the `binlog-generation` skill's "Cleaning the Repository" section on how to clean the repository while preserving binlog files.
|
||||
After making changes to fix path clashes, clean and rebuild to verify. See the `binlog-generation` skill's "Cleaning the Repository" section on how to clean the repository while preserving binlog files.
|
||||
|
||||
@@ -26,7 +26,7 @@ Analyze a codebase and produce a comprehensive research document that will guide
|
||||
Search for key files:
|
||||
|
||||
- Project files: `*.csproj`, `*.vcxproj`, `*.sln`, `package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`
|
||||
- Property and Target files: `*.props`, `*.targets`
|
||||
- Property and Target files: `*.props`, `*.targets`
|
||||
- Source files: `*.cs`, `*.ts`, `*.py`, `*.go`, `*.rs`, `*.cpp`, `*.h`
|
||||
- Existing tests: `*test*`, `*Test*`, `*spec*`
|
||||
- Config files: `README*`, `Makefile`, `*.config`
|
||||
|
||||
@@ -229,4 +229,3 @@ Always generate:
|
||||
| Registering scoped when singleton suffices | Stateless wrappers should be `AddSingleton` |
|
||||
| Forgetting test helper packages | `Microsoft.Extensions.TimeProvider.Testing` for time, `System.IO.Abstractions.TestingHelpers` for filesystem |
|
||||
| Ambient context without `AsyncLocal` | Non-async `[ThreadStatic]` breaks with `async`/`await` — always use `AsyncLocal<T>` |
|
||||
|
||||
|
||||
-2
@@ -49,5 +49,3 @@ For ReadyToRun-capable assemblies, there may be additional startup overhead on s
|
||||
**Fix:** Verify all deployment targets meet the new minimum requirements. For x86/x64, any CPU from ~2013 or later should be fine. For Windows Arm64, ensure `LSE` support (all Windows 11 compatible Arm64 devices).
|
||||
|
||||
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/jit/11/minimum-hardware-requirements
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user