Uh oh!
There was an error while loading. Please reload this page.
docs: add Skills.sh AI Skill page and register route - #29
Merged
Conversation
- Add content/skills-sh.mdx: new documentation page explaining the Skills.sh AI Skill for the TypeComposer framework - Update src/assets/data.json: insert 'Skills.sh AI Skill' entry immediately after 'Getting Started' in the Introduction section - Update src/router/router.ts: add 'skills-sh' child route under /docs so the page is reachable at /#/docs/skills-sh Roadmap alignment: Docs / Release 1.0 — community tooling docs. Build: npm run build passes (vite build, 2404 modules, exit 0).
Restructures content/skills-sh.mdx to mirror the concise, section-driven layout of Railway's Agent Skills page: - Retitle page to 'Agent Skills' - Add short tagline intro - Add 'What are agent skills?' section (agentskills.io spec) - Add 'Supported tools' sub-section (Claude Code, OpenAI Codex, Cursor, and other Agent Skills-compatible tools — no overclaiming) - Add 'Installation' section with exact install command: npx skills add TypeComposer/skill - Add 'The TypeComposer skill' section describing route-first design - Add 'Workflow coverage' table covering all TypeComposer use-cases - Add 'Source' section linking to GitHub - Remove generic 'Why Skills.sh?', 'Using the Skill', and 'Contributing' sections that were too contributor-centric and lacked user framing No nav/route files changed; build passes clean (2404 modules, 11s).
joaodibba pushed a commit
that referenced
this pull request
Jun 12, 2026
… URLs SEO P0 follow-up to PRs #29–#31. Problem: hash routing (/#/docs/skills) is not indexable by search engines because the fragment is never sent to the server. Direct deep-links also 404 without a server-side SPA fallback. Changes: - src/router/router.ts: history: "hash" → history: "browser" — enables clean URLs like /docs/skills, /docs/getting-started, /playground - vite.config.js: base: "./" → base: "/" — absolute asset paths prevent broken asset loads when navigating to nested routes (e.g. /docs/skills) - public/.htaccess: improve comments; SPA fallback rule was already correct (rewrite all non-file/non-dir requests to /index.html) and remains unchanged in logic — confirmed present before this PR - src/utils/seo.ts: add per-route canonical <link> injection (setCanonical); now meaningful because each route has a real URL; updated Router description to remove "hash" reference; root canonical in index.html stays https://typecomposer.com/ - public/sitemap.xml: strip /#/ from all 29 URLs (e.g. /#/docs/skills → /docs/skills, /#/playground → /playground) - public/llms.txt: strip /#/ from all 29 doc links; update Router key concept description to reference browser history mode - index.html: update JSON-LD SearchAction target from /#/docs/… to /docs/… Hosting note (⚠ must verify after deploy): The .htaccess SPA fallback was already present in the repo (added before PR #31) and is confirmed to contain the correct RewriteRule. Direct deep-link indexability (e.g. https://typecomposer.com/docs/skills returning 200 not 404) requires the Apache server to honour this .htaccess. Test with: curl -I https://typecomposer.com/docs/skills Expected: HTTP/2 200, not 301/302/404. Build: npm run build — ✓ 2405 modules, no errors Reviewer: @zico15
joaodibba added a commit
that referenced
this pull request
Jun 12, 2026
…e URLs (#32) ## SEO P0 — Clean URLs via Browser History Routing Follow-up to #29, #30, #31. ### Problem Hash routing (`/#/docs/skills`) is not indexable by search engines — the fragment after `#` is never sent to the server, so Googlebot sees only `https://typecomposer.com/` for every page. Direct deep-links to `/docs/skills` also 404 without a proper SPA fallback. This means the sitemap, per-route canonicals, and per-page meta added in #31 cannot deliver their full SEO value. ### Solution Switch `Router.create` from `history: "hash"` to `history: "browser"` (HTML5 `pushState`). The server-side SPA fallback (`.htaccess`) was **already present in the repo** before this PR and contains the correct `RewriteRule ^.*$ /index.html [L,QSA]` — so direct deep-links will be served correctly on the Apache-hosted production site once this PR is merged and deployed. --- ### Files Changed (7) | File | Change | |------|--------| | `src/router/router.ts` | `history: "hash"` → `history: "browser"` | | `vite.config.js` | `base: "./"` → `base: "/"` — absolute asset paths prevent broken JS/CSS loads when a user navigates directly to a nested route like `/docs/skills` (relative `./assets/` would resolve to `/docs/assets/`) | | `src/utils/seo.ts` | `updatePageMeta()` updates `<title>` and `<meta name="description">` per route. Runtime `setCanonical()` workaround **removed** — the static root canonical in `index.html` covers the home route, and `sitemap.xml` provides authoritative clean-URL canonicals for all 29 pages without requiring JS. | | `public/sitemap.xml` | Strip `#/` from all 29 URLs (`/#/docs/skills` → `/docs/skills`, `/#/playground` → `/playground`) | | `public/llms.txt` | Same URL migration for all 29 doc links; Router key concept updated to reference `history: "browser"` | | `index.html` | JSON-LD `SearchAction.target` updated from `/#/docs/{search_term_string}` → `/docs/{search_term_string}`; canonical comment tidied | | `public/.htaccess` | Comments improved for clarity; **rewrite rule logic unchanged** — it was already correct | --- ### Build Validation (commit 2) ``` npm run build ✓ 2405 modules transformed — no errors, no type errors ``` ``` dist/.htaccess ✓ present (copied from public/) dist/sitemap.xml ✓ 0 hash URLs remaining dist/llms.txt ✓ 0 hash URLs remaining dist/index.html ✓ assets load from /assets/* (absolute paths) dist/index.html ✓ root canonical <https://typecomposer.com/> present src/utils/seo.ts ✓ setCanonical() removed src/utils/seo.ts ✓ CANONICAL_BASE constant removed ``` --- ###⚠️ Hosting Verification Required Before Release The `.htaccess` SPA fallback must be honoured by the production Apache server. Please test after deploy: ```bash # Direct deep-link must return HTTP 200, not 301/302/404 curl -I https://typecomposer.com/docs/skills # Expected: HTTP/2 200 curl -I https://typecomposer.com/docs/getting-started # Expected: HTTP/2 200 curl -I https://typecomposer.com/playground # Expected: HTTP/2 200 # Assets must still load correctly curl -I https://typecomposer.com/typecomposer.svg # Expected: HTTP/2 200 curl -I https://typecomposer.com/sitemap.xml # Expected: HTTP/2 200 ``` If the Apache server requires `AllowOverride All` in its vhost config, that must be enabled separately by the hosting admin. If `.htaccess` is not supported, a `_redirects` (Netlify) or `vercel.json` equivalent would be needed — but the existing `.htaccess` confirms Apache is the target host. --- ### /docs/skills → Agent Skills ✓ Route `docs/skills` maps to `BaseView` and `PAGE_META["docs/skills"]` is unchanged: - Title: **Agent Skills | TypeComposer** - Description: _Use TypeComposer to build AI agent skills…_ --- cc @zico15
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
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Adds documentation for the TypeComposer Agent Skill on Skills.sh and wires it into the sidebar navigation and router.
Files changed
content/skills-sh.mdxsrc/assets/data.json"Skills.sh AI Skill"immediately after"Getting Started"in the Introduction sectionsrc/router/router.ts{ path: "skills-sh", component: BaseView }child route under/docsWhat the Skills.sh page covers (after rewrite)
The page follows the concise, section-driven layout of Railway's Agent Skills docs:
npx skills add TypeComposer/skillcommandRoadmap alignment
Docs / Release 1.0 — community tooling and contributor resources.
Validation
Only advisory warnings (chunk size hint, browser data age) — no errors.
Reviewer
@zico15 — please review when you get a chance. Happy to adjust copy or sidebar placement based on your preferences.