diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..31a9182 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,59 @@ +name: Docs (rspress → Pages) + +on: + push: + branches: [main] + pull_request: + paths: + - "docs/**" + - ".github/workflows/docs.yml" + workflow_dispatch: + +# Pages needs `pages: write` + `id-token: write` on the deploying job. +permissions: + contents: read + pages: write + id-token: write + +# One deploy at a time; cancel queued runs of the same branch. +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + cache-dependency-path: docs/package-lock.json + - name: Install docs dependencies + run: npm ci + working-directory: docs + - name: Build docs + run: npm run build + working-directory: docs + - name: Setup Pages + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + uses: actions/configure-pages@v5 + - name: Upload Pages artifact + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + uses: actions/upload-pages-artifact@v3 + with: + path: docs/doc_build + + deploy: + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 169810e..4d685cd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,47 +17,3 @@ jobs: with: name: dist path: dist/ - - docs-build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: npm - cache-dependency-path: docs/package-lock.json - - - name: Install docs dependencies - run: npm ci - working-directory: docs - - - name: Build docs - run: npm run build - working-directory: docs - - - name: Setup Pages - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - uses: actions/configure-pages@v5 - - - name: Upload Pages artifact - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - uses: actions/upload-pages-artifact@v3 - with: - path: docs/doc_build - - docs-deploy: - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - needs: docs-build - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 - diff --git a/AGENTS.md b/AGENTS.md index 2008a95..fb72bc4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -79,6 +79,6 @@ If a future PR adds any of those, document why in the PR description and update | Test suite | `tests/`, run via `uv run pytest -q` | | Lint config | `[tool.ruff]` in `pyproject.toml` | | Source modules | `src/coding_scaffold/` | -| Wiki | `docs/wiki/` (relative-link Markdown, renders on GitHub) | +| Wiki | `docs/docs/wiki/` (Markdown source for rspress; also published to GitHub Pages) | | Release notes | `CHANGELOG.md` | | CI | `.github/workflows/ci.yml` — runs ruff + pytest on push to main and on every PR | diff --git a/README.md b/README.md index b05c48d..f5efcfd 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,9 @@ ignore for now. `pilot` is a safe guided wrapper — it runs only read-only loca the exact commands to run next. Neither command installs anything or writes files; the recipe they print may include `--install` flags, but you make that call. -> Looking for a specific entry point? See the [persona paths](docs/wiki/Team-Rollout.md#persona-paths) +> Looking for a specific entry point? See the [persona paths](docs/docs/wiki/Team-Rollout.md#persona-paths) > (beginner / control-and-reproducibility / security review / team lead). For the threat model -> and what the scaffold deliberately does not enforce, read [Security](docs/wiki/Security.md#threat-model). +> and what the scaffold deliberately does not enforce, read [Security](docs/docs/wiki/Security.md#threat-model). > Release notes are in [CHANGELOG.md](CHANGELOG.md). CodingScaffold prepares an existing project for AI-assisted development without tying the team to @@ -411,7 +411,7 @@ coding-scaffold tools adapt --target ~/dev/my-project --tool pi For the full capability-by-capability breakdown (install support, permissions, MCP, local models, cloud providers, static profiles, runtime routing, etc.) see the -[compatibility matrix in Tool Adapters](docs/wiki/Tool-Adapters.md#compatibility-matrix) — that's +[compatibility matrix in Tool Adapters](docs/docs/wiki/Tool-Adapters.md#compatibility-matrix) — that's the single source of truth; this table is a scannable summary. ## Knowledge Base @@ -427,7 +427,7 @@ coding-scaffold knowledge create --target ~/dev/my-project New knowledge bases include raw inputs, a curated wiki, decision records, session notes, and optional hierarchical-sharing layers (`team` / `department` / `unit` / `company`). See -[Knowledge Base](docs/wiki/Knowledge-Base.md) for the full tree. The shorthand: +[Knowledge Base](docs/docs/wiki/Knowledge-Base.md) for the full tree. The shorthand: ```text .coding-scaffold/knowledge/ diff --git a/docs/package-lock.json b/docs/package-lock.json index 58fc6a3..beb14b6 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -19,6 +19,27 @@ "react-dom": "^19.2.6" } }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@emnapi/wasi-threads": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", @@ -106,7 +127,6 @@ "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-2.0.6.tgz", "integrity": "sha512-0/u7oTgPp9NsL7E7qXzYiOOPAsOJiDbOr0FmG6gizJDIpYK8nospogNrwQ00SG0had9fdhLI7XkhP160IaLnWw==", "license": "MIT", - "peer": true, "dependencies": { "@rspack/core": "~2.0.3", "@swc/helpers": "^0.5.21" @@ -195,6 +215,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -208,6 +231,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -221,6 +247,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -234,6 +263,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -299,7 +331,6 @@ "resolved": "https://registry.npmjs.org/@rspack/core/-/core-2.0.3.tgz", "integrity": "sha512-2ufO/8FHIA/lX6UOgSsKPhpDvHr0sh9lYq/n/LsIZsTwu3973BGbu2fg1Akvuu3rEnskPqXjsqH2EPBzEA42uA==", "license": "MIT", - "peer": true, "dependencies": { "@rspack/binding": "2.0.3" }, @@ -339,7 +370,6 @@ "resolved": "https://registry.npmjs.org/@rspress/core/-/core-2.0.12.tgz", "integrity": "sha512-3ER/9zjYrjapYKx/6KA5/K7Y9jOXltRjgq5/dv53n2xf6xo1Z8CoQVMmu0YMBn4Rn6AchmAcCc/KXZZXN4fjBg==", "license": "MIT", - "peer": true, "dependencies": { "@mdx-js/mdx": "^3.1.1", "@mdx-js/react": "^3.1.1", @@ -540,7 +570,6 @@ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.21.tgz", "integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==", "license": "Apache-2.0", - "peer": true, "dependencies": { "tslib": "^2.8.0" } @@ -624,7 +653,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -671,7 +699,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -1725,7 +1752,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", @@ -2497,8 +2523,7 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/ms": { "version": "2.1.3", @@ -2581,7 +2606,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -2591,7 +2615,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -2625,7 +2648,6 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -3088,7 +3110,6 @@ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", "license": "MIT", - "peer": true, "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0",