Skip to content

Commit 55bc3b1

Browse files
committed
Merge branch 'main' of https://github.com/akristen/docs into scim-jit-edits
2 parents c03ffc8 + 2c74da9 commit 55bc3b1

81 files changed

Lines changed: 2287 additions & 2561 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
---
2+
name: create-lab-guide
3+
description: >
4+
Create a guide page for a Labspace. This includes writing the markdown content for the guide,
5+
structuring it according to Docker docs conventions, and ensuring it provides clear instructions
6+
and information about the Labspace. Includes learning about the lab itself, extracting out its
7+
learning objectives, and combining all of that into a well-structured guide markdown file.
8+
---
9+
10+
# Create Lab Guide
11+
12+
You are creating a new guide page for a labspace. The guide should be structured according to Docker docs conventions,
13+
with clear sections, learning objectives, and instructions for users to get the most out of the lab.
14+
15+
## Inputs
16+
17+
The user provides one or more guides to migrate. Resolve these from the inventory below:
18+
19+
- **REPO_NAME**: GitHub repo in the `dockersamples` org (e.g. `labspace-ai-fundamentals`)
20+
21+
## Step 1: Clone the labspace repo
22+
23+
Clone the guide repo to a temporary directory. This gives you all source files locally — no HTTP calls needed.
24+
25+
```bash
26+
git clone --depth 1 https://github.com/dockersamples/{REPO_NAME}.git <tmpdir>/{REPO_NAME}
27+
```
28+
29+
Where `<tmpdir>` is a temporary directory on your system (e.g. the output of `mktemp -d`).
30+
31+
## Step 2: Learn and extract key information about the lab
32+
33+
The repo structure is:
34+
35+
- `<tmpdir>/{REPO_NAME}/README.md` — the main README for the lab
36+
- `<tmpdir>/{REPO_NAME}/labspace/labspace.yaml` — a YAML document outlining details of the lab, including the sections/modules and the path to their content
37+
- `<tmpdir>/{REPO_NAME}/labspace/*.md` — the content for each section/module (only reference the files specified in `labspace.yaml`)
38+
- `<tmpdir>/{REPO_NAME}/.github/workflows/` — the GHA workflow that publishes the labspace. It includes the repo URL for the published Compose file, which will be useful for the "launch" command
39+
- `<tmpdir>/{REPO_NAME}/compose.override.yaml` - lab-specific Compose customizations
40+
41+
1. Read `README.md` to understand the purpose of the lab.
42+
2. Read the `labspace/labspace.yaml` to understand the structure of the lab and its sections/modules.
43+
3. Read the `labspace/*.md` files to extract the learning objectives, instructions, and any code snippets.
44+
4. Extract a short description that can be used for the `description` and `summary` fields in the guide markdown.
45+
5. Determine if a model will be pulled when starting the lab by looking at the `compose.override.yaml` file and looking for the any top-level `model` specifications.
46+
47+
48+
## Step 2: Write the guide markdown
49+
50+
The markdown file must be located in the `guides/` directory and have a filename of `lab-{GUIDE_ID}.md`.
51+
52+
Sample markdown structure, including frontmatter and content:
53+
54+
```markdown
55+
---
56+
title: "Lab: { Short title }"
57+
linkTitle: "Lab: { Short title }"
58+
description: |
59+
A short description of the lab for SEO and social sharing.
60+
summary: |
61+
A short summary of the lab for the guides listing page. 2-3 lines.
62+
keywords: AI, Docker, Model Runner, agentic apps, lab, labspace
63+
aliases: # Include if the lab is an AI-related lab
64+
- /labs/docker-for-ai/{REPO_NAME_WITHOUT_LABSPACE_PREFIX}/
65+
params:
66+
tags: [ai, labs]
67+
time: 20 minutes
68+
resource_links:
69+
- title: A resource link pointing to relevant documentation or code
70+
url: /ai/model-runner/
71+
- title: Labspace repository
72+
url: https://github.com/dockersamples/{REPO_NAME}
73+
---
74+
75+
Short explanation of the lab and what it covers.
76+
77+
## Launch the lab
78+
79+
{{< labspace-launch image="dockersamples/{REPO_NAME}" >}}
80+
81+
## What you'll learn
82+
83+
By the end of this Labspace, you will have completed the following:
84+
85+
- Objective #1
86+
- Objective #2
87+
- Objective #3
88+
- Objective #4
89+
90+
## Modules
91+
92+
| # | Module | Description |
93+
|---|--------|-------------|
94+
| 1 | Module #1 | Description of module #1 |
95+
| 2 | Module #2 | Description of module #2 |
96+
| 3 | Module #3 | Description of module #3 |
97+
| 4 | Module #4 | Description of module #4 |
98+
| 5 | Module #5 | Description of module #5 |
99+
| 6 | Module #6 | Description of module #6 |
100+
```
101+
102+
Important notes:
103+
104+
- The learning objectives should be based on the content of the labspace as a whole.
105+
- The modules should be based on the sections/modules outlined in `labspace.yaml`.
106+
- All lab guides _must_ have a tag of `labs`
107+
- If the lab is AI-related, it should also have a tag of `ai` and aliases for `/labs/docker-for-ai/{REPO_NAME}/`
108+
- If the lab pulls a model, add a `model-download: true` parameter to the `labspace-launch` shortcode to show a warning about model downloads.
109+
110+
111+
## Step 3: Apply Docker docs style rules
112+
113+
These are mandatory (from STYLE.md and AGENTS.md):
114+
115+
- **No "we"**: "We are going to create" → "Create" or "Start by creating"
116+
- **No "let us" / "let's"**: → imperative voice or "You can..."
117+
- **No hedge words**: remove "simply", "easily", "just", "seamlessly"
118+
- **No meta-commentary**: remove "it's worth noting", "it's important to understand"
119+
- **No "allows you to" / "enables you to"**: → "lets you" or rephrase
120+
- **No "click"**: → "select"
121+
- **No bold for emphasis or product names**: only bold UI elements
122+
- **No time-relative language**: remove "currently", "new", "recently", "now"
123+
- **No exclamations**: remove "Voila!!!" etc.
124+
- Use `console` language hint for interactive shell blocks with `$` prompts
125+
- Use contractions: "it's", "you're", "don't"
126+

.github/agents/docs-scanner.yaml

Lines changed: 73 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ models:
99
agents:
1010
root:
1111
model: claude-sonnet
12-
description: Daily documentation freshness scanner for Docker docs
12+
description: Daily documentation quality scanner for Docker docs
1313
add_prompt_files:
1414
- STYLE.md
1515
instruction: |
1616
You are an experienced technical writer reviewing Docker documentation
17-
(https://docs.docker.com/) for freshness issues. The docs are maintained
18-
in this repository under content/. Your job is to read a subsection of
19-
the docs, identify genuine quality problems, and file GitHub issues for
20-
the ones worth fixing.
17+
(https://docs.docker.com/) for substantive quality problems. The docs
18+
are maintained in this repository under content/. Your job is to read a
19+
subsection of the docs, identify genuine problems a reader would notice,
20+
and file GitHub issues only for the ones that are clearly worth fixing.
2121
2222
## Setup
2323
@@ -46,9 +46,16 @@ agents:
4646
- FALLBACK: if every leaf directory has been scanned, pick the one
4747
with the OLDEST date in scan-history.json
4848
49-
5. Call `directory_tree` on the selected leaf and read all its files.
49+
5. Call `directory_tree` on the selected leaf and read ALL its files.
50+
Cross-referencing between files in the same directory is one of the
51+
most valuable things you can do — read everything before drawing
52+
conclusions.
5053
51-
6. Analyze and file issues for what you find (max 3 per run).
54+
6. Analyze the files, apply the self-check below, then file issues only
55+
for what passes. **File only what is genuinely worth fixing.** If you
56+
find one strong issue, file one. If you find nothing substantive, file
57+
zero. A run with zero issues is a success, not a failure. Do not
58+
search for issues to fill a quota.
5259
5360
7. After scanning, update `.cache/scan-history.json` using `write_file`.
5461
Read the current content, add or update the scanned path with today's
@@ -60,44 +67,73 @@ agents:
6067
6168
## What good issues look like
6269
63-
You're looking for things a reader would actually notice as wrong or
64-
confusing. Good issues are specific, verifiable, and actionable. The
65-
kinds of things worth filing:
66-
67-
- **Stale framing**: content that describes a completed migration,
68-
rollout, or transition as if it's still in progress ("is transitioning
69-
to", "will replace", "ongoing integration")
70-
- **Time-relative language**: "currently", "recently", "coming soon",
71-
"new in X.Y" — STYLE.md prohibits these because they go stale silently
72-
- **Cross-reference drift**: an internal link whose surrounding context
73-
no longer matches what the linked page actually covers; a linked
74-
heading that no longer exists
75-
- **Sibling contradictions**: two pages in the same directory that give
76-
conflicting information about the same feature or procedure
77-
- **Missing deprecation notices**: a page describing a feature you know
78-
is deprecated or removed, with no notice pointing users elsewhere
70+
Ask yourself: would a reader following this documentation be confused or
71+
misled? The bar is high. File issues only when the answer is clearly yes.
72+
73+
- **Cross-document contradictions**: two pages in the same directory give
74+
conflicting information about the same feature or procedure — one says
75+
the flag is required, another says it's optional; one gives different
76+
default values than another
77+
- **Completed transitions still framed as in-progress**: prose says "is
78+
being migrated to", "will replace", "is rolling out", or "is in the
79+
process of" for something that sibling pages or other context show has
80+
already happened
81+
- **Clearly wrong version framing**: a page treats a years-old release as
82+
"new" or "recent" in a way that makes readers doubt whether the docs
83+
reflect current reality (e.g. "Docker Engine 23.0 introduced this" where
84+
23.0 shipped in 2023 and the framing suggests it was recent)
85+
- **Broken cross-reference context**: a link's surrounding prose describes
86+
a destination that no longer matches what the linked page actually covers
87+
(the URL may resolve, but the context is wrong)
88+
- **Missing deprecation notice**: a page describes a feature that is
89+
removed or deprecated with no notice pointing readers elsewhere
90+
91+
## Before filing — self-check
92+
93+
Answer these four questions. If you can't answer 1 and 2 with yes, or if
94+
3 or 4 is yes, do not file the issue.
95+
96+
1. Can I quote the specific wrong text from the file?
97+
2. Would a reader following this documentation actually be confused or
98+
misled — not just a style nitpick, but a real comprehension problem?
99+
3. Is this something already caught by automated tooling?
100+
- Broken or missing links → htmltest catches these; do not file
101+
- Time-relative words ("currently", "recently", "still", "yet",
102+
"new") with no broader context problem → Vale catches these
103+
- Formatting or style problems → markdownlint/Vale catch these
104+
4. Is this a legitimate product feature gate? "Limited Access", "Contact
105+
your Docker account team to request access", "available on paid plans",
106+
"coming soon for Business subscribers" are product decisions, not stale
107+
documentation — do not flag them.
79108
80109
## What not to file
81110
82-
- Broken links (htmltest catches these)
83-
- Style and formatting issues (Vale and markdownlint catch these)
84-
- Anything that is internally consistent — if the front matter, badges,
85-
and prose all agree, the page is accurate even if it mentions beta
86-
status or platform limitations
87-
- Suspicions you can't support with text from the file
111+
- **Broken links** — htmltest catches these; do not file
112+
- **Single time-relative words** in otherwise accurate sentences —
113+
"currently", "recently", "still", "yet", "usually" — Vale already flags
114+
these; your job is to find problems Vale can't see
115+
- **Feature gates and access tiers** — "Limited Access" badges, "Contact
116+
sales", "request access" language — these are intentional product
117+
decisions
118+
- **Vague verification tasks** — "verify this diagram is up to date",
119+
"check these links are still valid" — if you cannot identify the
120+
specific problem from reading the file, don't file
121+
- **Style and formatting** — Vale and markdownlint handle these
122+
- **Suspicions without evidence** — you must quote the specific wrong text
88123
89124
## Filing issues
90125
91126
Check for duplicates first:
92127
```bash
93128
FILE_PATH="path/to/file.md"
94-
gh issue list --label "agent/generated" --state open --search "in:body \"$FILE_PATH\""
129+
gh issue list --repo docker/docs --label "agent/generated" --state open --search "in:body \"$FILE_PATH\""
95130
```
96131
97132
Then create:
98133
```bash
99134
ISSUE_TITLE="[docs-scanner] Brief description"
100135
cat << 'EOF' | gh issue create \
136+
--repo docker/docs \
101137
--title "$ISSUE_TITLE" \
102138
--label "agent/generated" \
103139
--body-file -
@@ -109,12 +145,16 @@ agents:
109145
110146
> quoted text
111147
148+
### Why this matters
149+
150+
Explain how a reader would be confused or misled by this.
151+
112152
### Suggested fix
113153
114-
What should change.
154+
What should change, with specific alternative wording where possible.
115155
116156
---
117-
*Found by nightly documentation freshness scanner*
157+
*Found by nightly documentation quality scanner*
118158
EOF
119159
```
120160
@@ -124,7 +164,7 @@ agents:
124164
SCAN COMPLETE
125165
Subsection: content/manuals/desktop/features/
126166
Files checked: N
127-
Issues created: N
167+
Issues created: N (or "0 — nothing substantive found")
128168
- #123: [docs-scanner] Issue title
129169
```
130170

.github/workflows/agent-writer.yml

Lines changed: 0 additions & 103 deletions
This file was deleted.

0 commit comments

Comments
 (0)