+
+
+ EOF
- - name: Build site
- run: mkdocs build --strict --site-dir _site
+ # 404 handler: GitHub Pages serves this for every unknown path under
+ # the project site (/adeptability/). Strip the repo prefix and
+ # forward to the new /docs/, preserving any query and hash. The
+ # meta-refresh falls back to the docs root if JavaScript is disabled.
+ cat > _site/404.html <
+
+
+
+ Redirecting…
+
+
+
+
+
-
-- :material-download: **[Install](getting-started/install.md)** — Go, Homebrew, curl, Docker.
-- :material-rocket-launch: **[Quickstart](getting-started/quickstart.md)** — author, sync, and see it in your harness in 60 seconds.
-- :material-lightbulb-on: **[Concepts](concepts/canonical-skills.md)** — canonical skills, harnesses, libraries, layouts, drift.
-- :material-console: **[Command reference](reference/commands.md)** — every command and flag.
-
-
+- 📦 **[Install](/docs/getting-started/install/)** — Go, Homebrew, curl, Docker.
+- 🚀 **[Quickstart](/docs/getting-started/quickstart/)** — author, sync, and see it in your harness in 60 seconds.
+- 💡 **[Concepts](/docs/concepts/canonical-skills/)** — canonical skills, harnesses, libraries, layouts, drift.
+- ⌨️ **[Command reference](/docs/reference/commands/)** — every command and flag.
## The core loop
diff --git a/docs/reference/commands.md b/site/src/content/docs/docs/reference/commands.md
similarity index 97%
rename from docs/reference/commands.md
rename to site/src/content/docs/docs/reference/commands.md
index 20e25f8..c9a25e9 100644
--- a/docs/reference/commands.md
+++ b/site/src/content/docs/docs/reference/commands.md
@@ -1,4 +1,7 @@
-# Command reference
+---
+title: "Command reference"
+description: "Every adept command and flag, generated faithfully from the cobra definitions."
+---
Every command and flag, generated faithfully from the cobra definitions. `adept --help`
is always the authoritative, version-matched source — this page mirrors it.
@@ -46,7 +49,7 @@ library, and adopts any pre-existing harness files (`.claude/`, `.cursor/`, `.op
| `--as-library` | `false` | Initialize a publishable library (skills at `/skills/`) |
With `--as-library`, harness adoption, mode, and the bundled default skills are skipped — see
-[Layouts](../concepts/layouts.md).
+[Layouts](/docs/concepts/layouts/).
---
@@ -307,7 +310,7 @@ references). High or critical findings exit `2` so CI can gate on it.
Compose a loop — a scheduled system that discovers work, hands it to agents, verifies with
an independent evaluator, persists state, and reschedules. A loop is not a synced resource:
it is a composition of things adept already manages (a discovery skill + an evaluator agent)
-plus a schedule that lives in CI or the harness. See the [loops guide](../guides/loops.md).
+plus a schedule that lives in CI or the harness. See the [loops guide](/docs/guides/loops/).
### loop add
@@ -329,7 +332,7 @@ first-loop checklist (state file, isolation, token cap, human review).
## library
-Manage the project's library remotes. See [Libraries](../concepts/libraries.md).
+Manage the project's library remotes. See [Libraries](/docs/concepts/libraries/).
### library add
@@ -420,7 +423,7 @@ Providers: `anthropic`, `ollama`. `test` health-pings the configured provider.
## hook
-Manage the git pre-commit drift hook. See the [Git drift hook guide](../guides/git-hook.md).
+Manage the git pre-commit drift hook. See the [Git drift hook guide](/docs/guides/git-hook/).
```
adept hook install [--mode fail|fix] # Install a pre-commit hook that blocks commits on drift
@@ -438,7 +441,7 @@ adept hook run [--fix] # Drift gate invoked by the installed ho
The team **expertise billboard** — a request/answer board. One person hosts `serve`; everyone
else registers with the bootstrap token and posts/answers requests. See
-[Exchange](../exchange.md). A shared `--server ` flag applies to every client subcommand
+[Exchange](/docs/exchange/). A shared `--server ` flag applies to every client subcommand
(default: `$ADEPT_EXCHANGE_SERVER` or the last registered server).
### exchange serve
diff --git a/site/src/content/docs/docs/reference/configuration.md b/site/src/content/docs/docs/reference/configuration.md
new file mode 100644
index 0000000..6dc314c
--- /dev/null
+++ b/site/src/content/docs/docs/reference/configuration.md
@@ -0,0 +1,82 @@
+---
+title: "Configuration reference"
+description: "Every adept config key with its type, default, and effect, plus the LLM provider config and project vs global scope."
+---
+
+`adept config` reads and writes project settings. Sets are strict-typed: an invalid value fails
+at parse time with the allowed list, so a typo never corrupts the config file.
+
+```bash
+adept config list # all keys, current values, allowed values
+adept config get mode # print one value
+adept config set mode copy # set one value (validated)
+adept config unset mode # clear back to default
+```
+
+Add `--json` to `list` for an array of `{key, value, allowed, help}` objects.
+
+## Keys
+
+Only the typed scalar keys below (plus the grouped `llm.*` fields) are exposed through
+`config get/set`. Harness enablement lives under [`adept harness`](/docs/reference/commands/#harness)
+and library remotes under [`adept library`](/docs/reference/commands/#library); they are stored
+in the same file but managed by their own commands.
+
+| Key | Type | Default | Effect |
+| --- | --- | --- | --- |
+| `mode` | `symlink` \| `copy` | `symlink` | How canonical skills materialize into each harness: a symlink back to the canonical file, or a copied file. See [Layouts](/docs/concepts/layouts/). |
+| `scan.onInstall` | `true` \| `false` | on when an LLM provider is configured | Run the safety scan and LLM intent pass before `skill install`. |
+| `scan.blockSeverity` | `critical` \| `high` \| `medium` | `critical` | Lowest scan severity that aborts an install. |
+
+The `llm` provider is grouped. `config list` surfaces its three fields for a complete view, but
+you set them through the `config llm` subcommand, not `config set`:
+
+| Key | Effect |
+| --- | --- |
+| `llm.provider` | Current provider name (`anthropic` or `ollama`), or `(unset)`. |
+| `llm.model` | Model override; provider default when unset. |
+| `llm.endpoint` | Endpoint override, for example a self-hosted Ollama. |
+
+## LLM provider config
+
+Safety scans can add an LLM intent pass on top of the static rules. `config llm` records which
+provider to use. API keys are never stored in the config: they are read from the environment at
+call time.
+
+```bash
+export ANTHROPIC_API_KEY=sk-...
+adept config llm set anthropic # provider: anthropic | ollama
+adept config llm test # health-ping the configured provider
+adept config llm unset # forget the provider
+
+# override the model or endpoint
+adept config llm set anthropic --model claude-3-5-sonnet-latest
+adept config llm set ollama --endpoint http://localhost:11434
+```
+
+Supported providers are `anthropic` and `ollama`. Setting a provider flips `scan.onInstall` on
+by default. See [Safety scans and LLM config](/docs/guides/safety-scans/) for how the pass is
+used.
+
+## Scope: project vs global
+
+By default `config` operates on the current project. Pass `--global` to read or write the
+home-level scope instead (the harness config adept applies outside any project):
+
+```bash
+adept config list --global
+adept config set mode copy --global
+```
+
+See [Scopes](/docs/concepts/scopes/) for when each applies.
+
+## Where config lives on disk
+
+Project config is a single JSON file at:
+
+```
+/.adeptability/config.json
+```
+
+It holds the typed keys above alongside harness state, materialization mode, and adapters.
+Writes are atomic. Prefer the `config` commands over hand-editing so values stay validated.
diff --git a/site/src/pages/index.astro b/site/src/pages/index.astro
new file mode 100644
index 0000000..239bbe8
--- /dev/null
+++ b/site/src/pages/index.astro
@@ -0,0 +1,528 @@
+---
+// adeptability landing page. Ported ~1:1 from the design reference.
+// Self-hosted fonts (zero external requests) + scoped styles imported below.
+import '@fontsource/space-grotesk/400.css';
+import '@fontsource/space-grotesk/500.css';
+import '@fontsource/space-grotesk/600.css';
+import '@fontsource/space-grotesk/700.css';
+import '@fontsource/jetbrains-mono/400.css';
+import '@fontsource/jetbrains-mono/500.css';
+import '@fontsource/jetbrains-mono/600.css';
+import '../styles/landing.css';
+
+const title = 'adeptability: write an AI skill once, run it in every coding agent';
+const description =
+ 'adept lets you author an AI coding skill or subagent once, then render it accurately into Claude Code, Cursor, Copilot, Codex, OpenCode and 50+ more agents. Dotfiles for your AI coding agents.';
+const ogDescription =
+ 'One source of truth. The right on-disk format everywhere. Author a skill or subagent once and adept renders it into every coding agent.';
+const canonical = 'https://adeptability.itaywol.tools/';
+const socialCard = `${canonical}social-card.png`;
+
+// Structured data for search engines and AI answer engines. Everything here is
+// factual: nothing invented. price 0 + MIT license reflect the open-source project.
+const jsonLd = {
+ '@context': 'https://schema.org',
+ '@type': 'SoftwareApplication',
+ name: 'adeptability',
+ alternateName: 'adept',
+ applicationCategory: 'DeveloperApplication',
+ operatingSystem: 'macOS, Linux, Windows',
+ description:
+ 'Open-source Go CLI that lets you author an AI coding skill or subagent once, then render it accurately into Claude Code, Cursor, GitHub Copilot, OpenAI Codex, OpenCode, and 50+ other AI coding agents.',
+ url: canonical,
+ downloadUrl: 'https://github.com/itaywol/adeptability/releases',
+ softwareHelp: 'https://adeptability.itaywol.tools/docs/',
+ license: 'https://opensource.org/licenses/MIT',
+ isAccessibleForFree: true,
+ programmingLanguage: 'Go',
+ codeRepository: 'https://github.com/itaywol/adeptability',
+ offers: {
+ '@type': 'Offer',
+ price: '0',
+ priceCurrency: 'USD',
+ },
+ sameAs: ['https://github.com/itaywol/adeptability'],
+ author: {
+ '@type': 'Person',
+ name: 'Itay Wolfish',
+ url: 'https://itaywol.com',
+ sameAs: [
+ 'https://itaywol.com',
+ 'https://www.linkedin.com/in/itaywolfish/',
+ 'https://github.com/itaywol',
+ ],
+ },
+};
+---
+
+
+
+
+
+
+ {title}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to content
+
+
+
+
+ Write an AI skill once, run it in every coding agent.
+
+
+ Author one canonical skill or subagent. adept sync renders
+ it accurately into Claude Code, Cursor, Copilot, Codex, OpenCode + 50 more.
+ Frontmatter, activation rules, aggregation,
+ and size budgets, handled for you.
+