Skip to main content

smithy-docs-navigator

Answer any Smithy question from the authoritative source instead of memory or a lossy web-fetch. Use whenever a task involves Smithy - writing, reading, reviewing, or fixing a Smithy model; the IDL syntax or grammar; a trait's exact rules (@length, @pattern, @range, @required, @http, @paginated, etc.); selectors; shapes, resources, operations, or services; HTTP bindings, protocols, or auth; whether a model change is backward compatible; or which code generator to use for a target language. Reads the published llms.txt index and the canonical source file of each page (`.rst` or `.md`), instead of a lossy web-fetch. Trigger phrases include "in Smithy", "Smithy model", "smithy.io", "what does the Smithy spec say", "how do I define ... in Smithy", "is this a breaking change", "which Smithy codegen".

Source facts

Repository
smithy-lang/smithy
Last source activity
August 4, 2026 at 14:34
Detected SKILL.md language
English
Stars
2,374
Forks
265

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
smithy-docs-navigator
description
Answer any Smithy question from the authoritative source instead of memory or a lossy web-fetch. Use whenever a task involves Smithy - writing, reading, reviewing, or fixing a Smithy model; the IDL syntax or grammar; a trait's exact rules (@length, @pattern, @range, @required, @http, @paginated, etc.); selectors; shapes, resources, operations, or services; HTTP bindings, protocols, or auth; whether a model change is backward compatible; or which code generator to use for a target language. Reads the published llms.txt index and the canonical source file of each page (`.rst` or `.md`), instead of a lossy web-fetch. Trigger phrases include "in Smithy", "Smithy model", "smithy.io", "what does the Smithy spec say", "how do I define ... in Smithy", "is this a breaking change", "which Smithy codegen".
license
Apache-2.0
# Smithy docs navigator ## Overview Smithy's documentation at `https://smithy.io/2.0/` is rendered from reStructuredText and MyST Markdown sources. Reaching a page through a summarizing web-fetch is lossy: it returns a paraphrase that silently drops the exact grammar, trait properties, and normative rules. This skill sends you to the source file and has you read it with a non-summarizing tool, so every answer is grounded in source text rather than memory or a summary. ## Usage Use this skill whenever a request touches Smithy - it is the default way to get an authoritative answer. Concretely: - Authoring or editing a model: shape, resource, operation, or service syntax; the IDL grammar; mixins; shape-ID resolution. - A trait's exact rules and properties (e.g. `@length`, `@http`, `@paginated`, etc.). - Selectors: writing or verifying a selector expression. - HTTP bindings, protocol behavior, or authentication. - Backward compatibility: whether a change breaks customers (the **Evolving Models** guide and the `breakingChanges` rules). - Which code generator to use for a target language, or where to find examples. - Any time a web-fetch of a `smithy.io` page came back summarized or truncated and you are missing the precise constraint, ABNF, or example. Do not use this for non-public, organization-internal conventions - only the published Smithy specification and ecosystem are covered here. ## Core Concepts - **The source file is authoritative. A summary is not.** The rendered HTML, when passed through a summarizing fetch, drops the exact rules you need. Read the source. - **`llms.txt` is the one index.** Published at `https://smithy.io/2.0/llms.txt`, its generated documentation links point at each page's canonical `.rst` or `.md` source (or a `.rst.template`/`.md.template` partial that a page includes), including resolved symlink targets. It also lists curated **Key references** (including backward compatibility), **Examples**, **Code generators by language** (with each generator's language and status where documented), and **Tooling**. There is no separate map to install. - **Read with a non-summarizing tool.** Routing source text back through a summarizing web-fetch loses fidelity just as the HTML did. Use a raw fetch. ## Procedure 1. **Find the page.** Read `https://smithy.io/2.0/llms.txt` (once per session) and pick the entry whose title matches your topic. For cross-cutting questions use its curated sections: backward compatibility -> **Key references**, language codegen -> **Code generators by language**, getting started -> **Examples**. 2. **Use the index for a URL you already have.** The source extension may be `.rst` or `.md` (or a `.rst.template`/`.md.template` partial), and some published pages are symlinks whose canonical source path differs from their rendered URL. The index gives the source URL to read. For a normal reStructuredText page not present in the index, you can rewrite: ``` https://smithy.io/2.0/<path>.html -> https://raw.githubusercontent.com/smithy-lang/smithy/main/docs/source-2.0/<path>.rst ``` Example: `https://smithy.io/2.0/spec/selectors.html` -> `https://raw.githubusercontent.com/smithy-lang/smithy/main/docs/source-2.0/spec/selectors.rst` 3. **Look up a specific trait through the trait index** instead of reading a whole spec page. The trait index at `https://smithy.io/2.0/trait-index.html` lists every trait and links each one to its defining page and section anchor, for example `spec/constraint-traits.html#smithy-api-length-trait`. To answer a trait-specific question: 1. Read the trait index and find the trait's link. The anchor (the part after `#`) is derived from the trait's shape ID, so `#smithy-api-length-trait` is the `smithy.api#length` trait. 2. Read the linked source page through the `llms.txt` index. For this reStructuredText page, `spec/constraint-traits.html` maps to `.../docs/source-2.0/spec/constraint-traits.rst`. 3. Read that `.rst` source and search for the trait's directive line, which names the shape ID directly: `.. smithy-trait:: smithy.api#length`. Read from there down to the next `.. smithy-trait::` directive - that span (its heading, summary, selector, and members) is the authoritative definition of just that one trait, without loading every trait. The trait index's own `.rst` source (`trait-index.rst`) is only the `.. smithy-trait-index::` build directive, so read the rendered `.html` for the index itself, then follow the per-trait links to their `.rst` sources. 4. **Read the full source with a non-summarizing tool** - a shell `curl`, a raw file/URL reader - not a summarizing web-fetch. Both `.rst` and `.md` are plain text: reStructuredText headings are underlined and code sits in `.. code-block:: smithy` blocks; Markdown headings begin with `#`. Their cross-reference roles and links name other pages you can resolve through the same index. 5. **Ground the answer in what you read.** Quote or cite the specific section. If a page cross-references another, resolve that one through the index too rather than relying on memory. ## Notes - The rewrite rule and index target the `2.0` docs on `main`. For another version, adjust the `2.0` segment and the branch/tag in the raw URL. - If a source link 404s, the page may have moved between versions. Re-check the index, then fall back to the rendered `.html` page and read it with a non-summarizing tool.
View on GitHub