-
Notifications
You must be signed in to change notification settings - Fork 1
Introduce a canonical config API with backward-compatible normalization #159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
KayleeWilliams
merged 3 commits into
dx/150-skill-activation
from
dx/151-canonical-config
Aug 15, 2026
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| --- | ||
| "leadtype": minor | ||
| --- | ||
|
|
||
| Add a canonical config vocabulary and one resolved-config normalizer. | ||
|
|
||
| `defineLeadtypeConfig` names the project/site config in `leadtype.config.ts`, alongside `defineDocsConfig` for a source repo's content-owned `docs.config.ts`. Three collection fields are renamed: `prefix` → `routePrefix`, `sourceConfig` → `inheritConfig`, `schema` → `frontmatterSchema`. | ||
|
|
||
| Every existing config keeps working. Both spellings normalize to one internal `ResolvedDocsConfig` that generate, sync, lint, score, and the runtime source all read, so no subsystem re-derives the project from raw config. The resolved shape adds a deduped source graph — collections sharing a `(repository, ref)` resolve to one acquisition — and per-field provenance recording whether each value was authored, inherited from a source repo, inferred, or defaulted. | ||
|
|
||
| Deprecated fields carry `@deprecated` guidance in the IDE and warn once per config file at load. Setting an old name and its replacement together is an error naming both rather than a silent precedence rule. Nothing is removed before 1.0. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| { | ||
| "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json", | ||
| "version": "1.0", | ||
| "protocolVersion": "2025-06-18", | ||
| "name": "leadtype-docs", | ||
| "description": "A docs pipeline that turns one MDX source into a website, agent-readable artifacts, and a search index.", | ||
| "serverUrl": "http://localhost:5173/mcp", | ||
| "tools": [ | ||
| { | ||
| "name": "search-docs", | ||
| "title": "Search documentation", | ||
| "description": "Search the documentation and return ranked results ({ title, urlPath, snippet }). Use get-page to read a full result.", | ||
| "annotations": { | ||
| "idempotentHint": true, | ||
| "readOnlyHint": true | ||
| } | ||
| }, | ||
| { | ||
| "name": "get-page", | ||
| "title": "Get a documentation page", | ||
| "description": "Return the full Markdown of one documentation page by its urlPath (e.g. the urlPath from a search-docs result).", | ||
| "annotations": { | ||
| "idempotentHint": true, | ||
| "readOnlyHint": true | ||
| } | ||
| } | ||
| ], | ||
| "serverInfo": { | ||
| "name": "leadtype-docs", | ||
| "version": "1.0.0", | ||
| "description": "A docs pipeline that turns one MDX source into a website, agent-readable artifacts, and a search index.", | ||
| "instructions": "Search and read the documentation for A docs pipeline that turns one MDX source into a website, agent-readable artifacts, and a search index." | ||
| }, | ||
| "transport": { | ||
| "type": "streamable-http", | ||
| "endpoint": "http://localhost:5173/mcp" | ||
| }, | ||
| "capabilities": { | ||
| "tools": {} | ||
| }, | ||
| "authentication": { | ||
| "required": false | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,211 @@ | ||
| User-agent: * | ||
| Content-Signal: ai-train=no, search=yes, ai-input=yes | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: OAI-SearchBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: ChatGPT-User | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: PerplexityBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Perplexity-User | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: ClaudeBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Claude-SearchBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Claude-User | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Claude-Web | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Gemini-Deep-Research | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: DeepSeekBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Meta-ExternalFetcher | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: AmazonBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Amazonbot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Bingbot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: MistralBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: AppleBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: YouBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: GPTBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Google-Extended | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: CCBot | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: ByteSpider | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Bytespider | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: anthropic-ai | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: MetaExternalAgent | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| User-agent: Applebot-Extended | ||
| Allow: / | ||
| Allow: /docs/ | ||
| Allow: /llms.txt | ||
| Allow: /docs/llms.txt | ||
| Allow: /sitemap.xml | ||
| Allow: /sitemap.md | ||
|
|
||
| Sitemap: http://localhost:5173/sitemap.xml | ||
| Schemamap: http://localhost:5173/schema-map.xml | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <schemamap> | ||
| <feed> | ||
| <loc>http://localhost:5173/feeds/schema.jsonl</loc> | ||
| <format>application/jsonl</format> | ||
| <itemType>https://schema.org/TechArticle</itemType> | ||
| </feed> | ||
| </schemamap> |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These six files are build output, not source.
apps/sveltekit-example/package.jsonrunsleadtype generate --src ../.. --docs-dir docs --out static --base-url http://localhost:5173, anddev,build, andcheck-typesall invoke it — so every one of these files is rewritten (with freshdateModifiedtimestamps) the moment anyone runs the example, and every URL inside them now hashttp://localhost:5173committed into git.Root cause is the root
.gitignore: it maintains two parallel generated-output lists, but theapps/sveltekit-example/static/*block has only 5 entries where theapps/*/public/*block has 11.git check-ignore --no-indexconfirms the asymmetry —apps/next-example/public/robots.txtis ignored via.gitignore:46, and none of the six sveltekit files are ignored at all. Nothing else has ever been tracked in that directory, and CI never builds the example apps, so this drift cannot be caught automatically.Technical details
Affected sites:
.gitignore:39-54,apps/sveltekit-example/package.jsonRequired outcome: nothing generated is tracked under
apps/sveltekit-example/static/, andgit statusstays clean after running the example.Suggested approach:
git rm --cachedthe six files and add the six missing entries (feeds/,mcp.json,robots.txt,schema-map.xml,sitemap.md,sitemap.xml) to the sveltekit block — or drop both hand-maintained lists in favour of an app-local.gitignore, which is whatapps/c15t-exampleandapps/tanstackalready do.Open question: were these swept in accidentally while regenerating docs for the new
config-modelpage?