Skip to content
This repository was archived by the owner on Jun 14, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Deploy

on:
push:
branches: [main]
pull_request:

concurrency:
group: deploy-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read
pull-requests: write

jobs:
deploy:
runs-on: ubuntu-latest
# fork PRs have no CLOUDFLARE_API_TOKEN
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork == false
steps:
- uses: actions/checkout@v4

- uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install
run: bun install --frozen-lockfile

- name: Check
run: bun x tangly check --strict

- name: Build (preview)
if: github.event_name == 'pull_request'
run: bun x tangly build --env preview

- name: Build (production)
if: github.event_name == 'push'
run: bun x tangly build

- name: Upload preview version
if: github.event_name == 'pull_request'
id: preview
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
run: |
[ -n "$CLOUDFLARE_API_TOKEN" ] || { echo "::error::CLOUDFLARE_API_TOKEN is empty — grant this repo access to the org secret"; exit 1; }
set +e
OUT=$(bun x wrangler versions upload 2>&1)
STATUS=$?
echo "$OUT"
[ $STATUS -eq 0 ] || exit $STATUS
URL=$(echo "$OUT" | grep -o 'https://[a-z0-9-]*-squirrelscan-docs[^ ]*\.workers\.dev' | head -1)
[ -n "$URL" ] || { echo "no preview URL in wrangler output"; exit 1; }
echo "url=$URL" >> "$GITHUB_OUTPUT"

- name: Comment preview URL
if: github.event_name == 'pull_request'
env:
GH_TOKEN: ${{ github.token }}
PREVIEW_URL: ${{ steps.preview.outputs.url }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
PR_NUMBER: ${{ github.event.pull_request.number }}
REPO: ${{ github.repository }}
run: |
BODY="📝 Docs preview: $PREVIEW_URL (commit $HEAD_SHA)"
gh pr comment "$PR_NUMBER" --repo "$REPO" --edit-last --body "$BODY" \
|| gh pr comment "$PR_NUMBER" --repo "$REPO" --body "$BODY"

- name: Deploy production
if: github.event_name == 'push'
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
run: bun x wrangler deploy
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules/
dist/
.tangly/
.wrangler/
7 changes: 7 additions & 0 deletions .tanglyignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.git
.gitignore
.tanglyignore
Makefile
wrangler.jsonc
package.json
bun.lock
14 changes: 11 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
.PHONY: validate
.PHONY: validate dev build deploy

validate:
mint validate
mint broken-links
bun x tangly check --strict

dev:
bun x tangly dev

build:
bun x tangly build

deploy:
bun x tangly build && bun x wrangler deploy
1,868 changes: 1,868 additions & 0 deletions bun.lock

Large diffs are not rendered by default.

32 changes: 25 additions & 7 deletions docs.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"$schema": "https://mintlify.com/docs.json",
"theme": "aspen",
"$schema": "https://tangly.dev/schema/docs.json",
"theme": "tang",
"name": "squirrelscan",
"siteUrl": "https://docs.squirrelscan.com",
"description": "CLI Website Audits for Agents & LLMs",
"colors": {
"primary": "#C4530F",
Expand Down Expand Up @@ -40,15 +41,25 @@
"groups": [
{
"group": "Getting Started",
"pages": ["index", "quickstart", "agents"]
"pages": [
"index",
"quickstart",
"agents"
]
},
{
"group": "Concepts",
"pages": ["projects", "crawl", "reports"]
"pages": [
"projects",
"crawl",
"reports"
]
},
{
"group": "Dashboard",
"pages": ["dashboard/index"]
"pages": [
"dashboard/index"
]
},
{
"group": "CLI Reference",
Expand All @@ -63,7 +74,8 @@
"cli/feedback",
"cli/auth",
"cli/self",
"cli/skills"
"cli/skills",
"cli/debug"
]
},
{
Expand Down Expand Up @@ -452,7 +464,13 @@
}
},
"contextual": {
"options": ["copy", "view", "claude", "mcp", "cursor"]
"options": [
"copy",
"view",
"claude",
"mcp",
"cursor"
]
},
"footer": {
"socials": {
Expand Down
15 changes: 15 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "@squirrelscan/docs",
"private": true,
"scripts": {
"dev": "tangly dev",
"build": "tangly build",
"check": "tangly check --strict",
"preview": "tangly preview",
"deploy": "tangly build && wrangler deploy"
},
"devDependencies": {
"tangly": "0.2.0",
"wrangler": "^4.20.0"
}
}
2 changes: 1 addition & 1 deletion rules/schema/website-search.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Checks for WebSite schema with sitelinks searchbox

## Solution

WebSite schema with SearchAction enables the sitelinks searchbox in Google results. Add to your homepage: WebSite with url, potentialAction (SearchAction with target URL using {search_term_string} placeholder, and query-input). This lets users search your site directly from Google results.
WebSite schema with SearchAction enables the sitelinks searchbox in Google results. Add to your homepage: WebSite with url, potentialAction (SearchAction with target URL using `{search_term_string}` placeholder, and query-input). This lets users search your site directly from Google results.

## Enable / Disable

Expand Down
14 changes: 14 additions & 0 deletions wrangler.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "squirrelscan-docs",
"compatibility_date": "2026-06-01",
"account_id": "fe8c09050e3a4f5758a97d28a93c2a63",
"preview_urls": true,
"assets": {
"directory": "./dist",
"html_handling": "drop-trailing-slash",
"not_found_handling": "404-page"
}
// Custom domain — enable on cutover from Mintlify:
// "routes": [{ "pattern": "docs.squirrelscan.com", "custom_domain": true }]
}
Loading