Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 4 additions & 1 deletion .github/instructions/content-guidelines.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ The strategic priority is simplification: create less content and remove content
* Would a typical internet user figure this out on their own by exploring the UI?
* Is the information presented at the moment the reader actually needs it?

Look for content to remove whether or not you were asked to, and don't add non-essential content in the first place. Before you cut, name the reader who would fail without it and how they would fail. If you cannot name a specific failure, cut it.

## Give opinionated, actionable guidance

This applies whenever you give the reader advice or present ways to accomplish a task.
Expand Down Expand Up @@ -72,4 +74,5 @@ These apply to the prose in an article (intros and explanatory text), not to str
* Write for the one reader scenario the article targets, for example a particular deployment configuration (GHEC with EMUs vs. Classic) or a particular type of reader (an open source maintainer vs. an enterprise developer). When the article has a content design plan, target the audience it identifies rather than inventing one; for small edits without a plan, follow the audience the existing article is clearly written for. Do not branch content to serve multiple audiences; readers in other scenarios can adapt the guidance. The exception is version differences: when in-article `{% ifversion %}` branching is genuinely required (see the versioning rules in `content.instructions.md`), it is not a scannability violation.
* Ruthlessly minimize links. Only link when you actively want most readers to follow it in the ideal scenario. No "just in case" links. Links that build a logical user journey are exactly the kind to keep, for example a Prerequisites link that sends the reader to setup they need first, or a Next steps link that points them to the natural follow-on task.
* Ruthlessly minimize alerts (notes, tips, warnings): more than one per article should be exceptional, and crowding several into one section is worse than spreading them out. Keep each to 1-2 sentences. Don't open an article or section with an alert unless the reader needs it before the surrounding content. Prefer folding a useful alert into the prose over deleting it, but first apply this test: if the reader must actually notice it to use the page correctly, keep it as an alert (don't fold or count it), since folding defeats its purpose. This covers, for example, critical warnings, plan or availability constraints, public preview notices, and cues that orient the reader to how the page works or which content applies to them.
* Prefer short sentences and paragraphs, generous white space, and formatting like bold and tables to highlight key information. Use a table only for genuinely complex data that belongs in a tabular format; do not add a table that repeats information already stated more clearly in prose.
* Ruthlessly minimize screenshots. Only add one, or ask a writer to add one, when a UI element is genuinely hard to find: small, hidden until something is opened, or ambiguous among competing options. A mention of screenshots in an issue or PR description is not a reason.
* Prefer short sentences and paragraphs, generous white space, and formatting like bold and tables to highlight key information. Keep each sentence to one idea: where a sentence carries two, split it into two sentences rather than trimming it. Use a table only for genuinely complex data that belongs in a tabular format; do not add a table that repeats information already stated more clearly in prose.
40 changes: 38 additions & 2 deletions .github/workflows/sync-sdk-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,26 @@ jobs:
- name: Checkout docs-internal
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

# `preserve-redirects.ts` reads the pre-sync state from `git HEAD` to learn
# which URLs are currently live. That is only a valid baseline when HEAD is
# the published branch. `pull_request` runs are safe because they never
# publish, but a `workflow_dispatch` from another branch would publish while
# comparing against that branch's tree, writing stale redirects into a real
# PR. Fail early rather than let the run reach the push step.
- name: Verify publishing runs start from the default branch
if: github.event_name != 'pull_request' && inputs.dry_run != 'true'
run: |
if [ "$GITHUB_REF_NAME" != "$DEFAULT_BRANCH" ]; then
echo "::error::This run would push and open a PR, but it started from" \
"'$GITHUB_REF_NAME' rather than the default branch '$DEFAULT_BRANCH'." \
"HEAD is the baseline for redirect preservation, so syncing from another" \
"branch can drop or invent redirects. Re-run from '$DEFAULT_BRANCH', or" \
"use the dry_run input to test from a branch."
exit 1
fi
env:
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}

- name: Fetch SDK docs from copilot-sdk
env:
GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
Expand Down Expand Up @@ -91,6 +111,22 @@ jobs:
--content-dir content \
--sdk-docs-dir "$SDK_DOCS_TARGET"

- name: Preserve redirects
run: |
# `--git-ref HEAD` is the record of which URLs are currently live. On
# publishing runs a preceding step has verified HEAD is the default
# branch, and the sync branch is only created later with `checkout -B`.
# On `pull_request` runs HEAD is the merge commit instead, which is fine
# because those runs are dry-run only.
#
# A removed page that needs a redirect decision should still produce a
# PR, because the PR is where that decision gets made and committed. The
# script still writes the at-risk URLs and a copy-pasteable
# `redirect_from` block to the run summary either way.
npx tsx src/workflows/sync-sdk-docs/preserve-redirects.ts \
--sdk-docs-dir "$SDK_DOCS_TARGET" \
--git-ref HEAD

- name: Convert Mermaid diagrams to PNG
env:
PUPPETEER_CHROMIUM_REVISION: ''
Expand Down Expand Up @@ -165,7 +201,7 @@ jobs:
${{ env.ASSETS_TARGET }}
retention-days: 7

# --- Push and PR (only on schedule/dispatch, not dry-run, and changes exist) ---
# --- Push and PR (only on dispatch, not dry-run, and changes exist) ---
- name: Commit and push
if: >-
env.has_changes == 'true'
Expand Down Expand Up @@ -212,7 +248,7 @@ jobs:
- Normalizes code fence languages and list formatting

> [!NOTE]
> This PR is auto-generated. Do not edit it directly — make changes in the [copilot-sdk docs](https://github.com/github/copilot-sdk/tree/main/docs) instead.
> This PR is auto-generated. Do not edit it directly — make changes in the [copilot-sdk docs](https://github.com/github/copilot-sdk/tree/main/docs) instead. Exception: \`redirect_from\` cannot come from upstream, so add redirects here.

---
_Generated by the [sync-sdk-docs workflow run]($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID)._"
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
3 changes: 3 additions & 0 deletions content/copilot/reference/ai-models/model-hosting.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ Used for:
* {% data variables.copilot.copilot_gpt_56_sol %}
* {% data variables.copilot.copilot_gpt_56_terra %}
* {% data variables.copilot.copilot_gpt_6_astra %}
* {% data variables.copilot.copilot_gpt_6_luna %}
* {% data variables.copilot.copilot_gpt_6_sol %}

These models are hosted by OpenAI and {% data variables.product.github %}'s Azure infrastructure.

Expand All @@ -48,6 +50,7 @@ Used for:
* {% data variables.copilot.copilot_claude_opus_48 %}
* {% data variables.copilot.copilot_claude_opus_48_fast %}
* {% data variables.copilot.copilot_claude_opus_5 %}
* {% data variables.copilot.copilot_claude_opus_55 %}
* {% data variables.copilot.copilot_claude_fable_5 %}
* {% data variables.copilot.copilot_claude_fable_51 %}

Expand Down
6 changes: 6 additions & 0 deletions content/copilot/reference/ai-models/supported-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ Choosing a larger context window or higher reasoning will impact {% data variabl
| {% data variables.copilot.copilot_claude_opus_47 %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_claude_opus_48 %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_claude_opus_5 %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_claude_opus_55 %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_claude_sonnet_5 %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_claude_opus_48_fast %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_claude_fable_5 %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
Expand All @@ -93,6 +94,8 @@ Choosing a larger context window or higher reasoning will impact {% data variabl
| {% data variables.copilot.copilot_gpt_56_sol %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_gpt_56_terra %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_gpt_6_astra %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_gpt_6_luna %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_gpt_6_sol %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
| {% data variables.copilot.copilot_kimi_k3 %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |

{% endrowheaders %}
Expand Down Expand Up @@ -134,8 +137,11 @@ Some {% data variables.product.prodname_copilot_short %} models require minimum
| {% data variables.copilot.copilot_gpt_56_sol %} | `1.128.0` | TBD | TBD | TBD | TBD |
| {% data variables.copilot.copilot_gpt_56_terra %} | `1.128.0` | TBD | TBD | TBD | TBD |
| {% data variables.copilot.copilot_gpt_6_astra %} | `1.136.1` | `17.14.19` | TBD | TBD | TBD |
| {% data variables.copilot.copilot_gpt_6_luna %} | TBD | `17.14.19` | TBD | TBD | TBD |
| {% data variables.copilot.copilot_gpt_6_sol %} | TBD | `17.14.19` | TBD | TBD | TBD |
| {% data variables.copilot.copilot_claude_opus_48 %} | `v1.118` | `17.14.6` | TBD | TBD | TBD |
| {% data variables.copilot.copilot_claude_opus_5 %} | `v1.128.0` | `17.14.22` | TBD | TBD | TBD |
| {% data variables.copilot.copilot_claude_opus_55 %} | TBD | `17.14.6` | TBD | TBD | TBD |
| {% data variables.copilot.copilot_claude_sonnet_5 %} | `v1.124` | `17.14.6` | TBD | TBD | TBD |
| {% data variables.copilot.copilot_claude_fable_5 %} | `v1.124` | `17.14.6` | TBD | TBD | TBD |
| {% data variables.copilot.copilot_claude_fable_51 %} | TBD | TBD | TBD | TBD | TBD |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ All prices are **per 1 million tokens**.

{% data reusables.copilot.extended-context-pricing %}

{% data variables.copilot.copilot_gpt_56_sol %}, {% data variables.copilot.copilot_gpt_56_terra %}, {% data variables.copilot.copilot_gpt_56_luna %}, and {% data variables.copilot.copilot_gpt_6_astra %} include a cache write cost in addition to cached input. Earlier OpenAI models have no cache write cost.
{% data variables.copilot.copilot_gpt_56_sol %}, {% data variables.copilot.copilot_gpt_56_terra %}, {% data variables.copilot.copilot_gpt_56_luna %}, {% data variables.copilot.copilot_gpt_6_astra %}, {% data variables.copilot.copilot_gpt_6_luna %}, and {% data variables.copilot.copilot_gpt_6_sol %} include a cache write cost in addition to cached input. Earlier OpenAI models have no cache write cost.

| Model | Release status | Category | Tier | Threshold (input tokens) | Input | Cached input | Cache write | Output |
| --- | --- | --- | --- | --- | ---: | ---: | ---: | ---: |
Expand Down
Loading
Loading