chore(deps-dev): bump typescript from 6.0.3 to 7.0.2 in the publication-tooling group #254
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
| name: validate | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| merge_group: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: validate-${{ github.event.pull_request.number || github.sha }} | |
| cancel-in-progress: true | |
| jobs: | |
| site: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2 | |
| with: | |
| bun-version: "1.3.4" | |
| - name: install pinned dependencies | |
| run: bun install --frozen-lockfile | |
| - name: validate field runs | |
| run: bun run check:field-runs | |
| - name: type check and build | |
| run: | | |
| bun run check | |
| bun run build | |
| - name: verify generated publication | |
| run: bun run test:site | |
| - name: check documentation links | |
| uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2 | |
| with: | |
| args: >- | |
| --config .github/lychee.toml | |
| --root-dir "$(pwd)/dist" | |
| --no-progress | |
| "README*.md" | |
| "AGENTS.md" | |
| "CLAUDE.md" | |
| "CODE_OF_CONDUCT.md" | |
| "CONTRIBUTING.md" | |
| "SECURITY.md" | |
| ".github/**/*.md" | |
| "docs/**/*.md" | |
| "hooks/README.md" | |
| "plugins/README.md" | |
| "plugins/CHANGELOG.md" | |
| "plugins/cc/README.md" | |
| "plugins/lore/README.md" | |
| "examples/README.md" | |
| fail: true | |
| - name: install accessibility browser | |
| run: bunx playwright install --with-deps chromium | |
| - name: scan mobile and desktop accessibility | |
| run: bun run test:a11y | |
| handbook: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 | |
| with: | |
| python-version: "3.12" | |
| - name: validate source registry and frontmatter | |
| run: python3 .github/scripts/check_sources.py | |
| - name: validate json and python | |
| run: | | |
| python3 - <<'PY' | |
| import json | |
| import pathlib | |
| import py_compile | |
| import subprocess | |
| tracked = subprocess.check_output(["git", "ls-files"], text=True).splitlines() | |
| for raw in tracked: | |
| path = pathlib.Path(raw) | |
| if path.suffix == ".json": | |
| with path.open(encoding="utf-8") as handle: | |
| json.load(handle) | |
| elif path.suffix == ".py": | |
| py_compile.compile(str(path), doraise=True) | |
| PY | |
| - name: validate shell scripts | |
| shell: bash | |
| run: | | |
| mapfile -t scripts < <(git ls-files '*.sh') | |
| for script in "${scripts[@]}"; do | |
| bash -n "$script" | |
| done | |
| - name: reject private artifacts and misleading prose | |
| shell: bash | |
| run: | | |
| if git ls-files content data handoffs | grep -q .; then | |
| echo "private artifact directories must not contain tracked files" | |
| exit 1 | |
| fi | |
| if [[ "$(head -n 1 CLAUDE.md)" != "@AGENTS.md" ]]; then | |
| echo "CLAUDE.md must import the canonical AGENTS.md policy first" | |
| exit 1 | |
| fi | |
| expected_root_markdown=$'AGENTS.md\nCLAUDE.md\nCODE_OF_CONDUCT.md\nCONTRIBUTING.md\nREADME.md\nSECURITY.md' | |
| actual_root_markdown="$(git ls-files '*.md' | awk 'index($0, "/") == 0' | sort)" | |
| if [[ "$actual_root_markdown" != "$expected_root_markdown" ]]; then | |
| echo "tracked root markdown must stay limited to the canonical repository surface" | |
| diff -u <(printf '%s\n' "$expected_root_markdown") <(printf '%s\n' "$actual_root_markdown") || true | |
| exit 1 | |
| fi | |
| if git grep -n $'\u2014' -- README.md README.*.md AGENTS.md CLAUDE.md CODE_OF_CONDUCT.md CONTRIBUTING.md SECURITY.md '.github/**/*.md' 'docs/**' '.claude-plugin/*.json'; then | |
| echo "em dashes are outside the repository style" | |
| exit 1 | |
| fi | |
| if git grep -n -iE 'maintained by someone who uses claude code as their job|where (claude code|codex) wins|no FUD|last-commit' -- '*.md'; then | |
| echo "stale authority or winner framing found" | |
| exit 1 | |
| fi | |
| if git grep -n -iE '\bnot (only|just|merely|simply|uncommon|insignificant|impossible|bad|wrong|unreasonable|unlikely|automatically|enough)\b|\bno (small|minor|mean|little)\b' -- '*.md' ':(exclude)plugins/**/CHANGELOG.md'; then | |
| echo "litotes or negative comparison framing found" | |
| exit 1 | |
| fi | |
| markdown: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| - name: lint markdown | |
| uses: DavidAnson/markdownlint-cli2-action@6bf21b07787794f89a243495939cd651942aeabe # v24.1.0 | |
| with: | |
| globs: | | |
| README*.md | |
| AGENTS.md | |
| CLAUDE.md | |
| CODE_OF_CONDUCT.md | |
| CONTRIBUTING.md | |
| SECURITY.md | |
| .github/**/*.md | |
| docs/**/*.md | |
| hooks/README.md | |
| plugins/README.md | |
| plugins/CHANGELOG.md | |
| plugins/cc/README.md | |
| plugins/lore/README.md | |
| examples/README.md |