@abstractdata/create-docs 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +36 -0
  2. package/bin/.fuse_hidden0000000a00000002 +194 -0
  3. package/bin/.fuse_hidden0000000d00000003 +194 -0
  4. package/bin/cli.js +194 -0
  5. package/package.json +38 -0
  6. package/template/.claude/skills/abstract-data-docs-author/SKILL.md +305 -0
  7. package/template/.claude/skills/abstract-data-setup/SKILL.md +555 -0
  8. package/template/.cursor/rules/abstract-data-docs-author.mdc +311 -0
  9. package/template/.cursor/rules/abstract-data-setup.mdc +561 -0
  10. package/template/.cursor/rules/welcome.mdc +29 -0
  11. package/template/.fuse_hidden0000001e00000008 +75 -0
  12. package/template/.fuse_hidden0000002100000009 +46 -0
  13. package/template/.fuse_hidden000000210000000a +75 -0
  14. package/template/.fuse_hidden000000240000000b +46 -0
  15. package/template/.github/copilot-instructions.md +893 -0
  16. package/template/.github/workflows/deploy-cloudflare.yml +50 -0
  17. package/template/.github/workflows/deploy-vercel.yml +47 -0
  18. package/template/.github/workflows/deploy.yml +55 -0
  19. package/template/CLAUDE.md +46 -0
  20. package/template/README.md +75 -0
  21. package/template/astro.config.mjs +69 -0
  22. package/template/package.json +25 -0
  23. package/template/public/favicon.svg +26 -0
  24. package/template/scripts/build-python-docs.mjs +385 -0
  25. package/template/scripts/build-ts-docs.mjs +349 -0
  26. package/template/scripts/python-autodoc.json +10 -0
  27. package/template/scripts/ts-autodoc.json +10 -0
  28. package/template/src/assets/README.md +1 -0
  29. package/template/src/content/docs/index.mdx +81 -0
  30. package/template/src/content/docs/quickstart.md +162 -0
  31. package/template/src/content.config.ts +46 -0
  32. package/template/src/env.d.ts +2 -0
  33. package/template/tsconfig.json +5 -0
@@ -0,0 +1,50 @@
1
+ name: Deploy to Cloudflare Pages
2
+
3
+ # Optional. Cloudflare Pages can also auto-deploy from a connected Git repo
4
+ # (no workflow needed). Use this only if you want CI to control the deploy.
5
+ #
6
+ # Setup:
7
+ # 1. Create a Cloudflare API token with "Cloudflare Pages — Edit" permission
8
+ # at dash.cloudflare.com/profile/api-tokens
9
+ # 2. Add two GitHub secrets:
10
+ # - CLOUDFLARE_API_TOKEN
11
+ # - CLOUDFLARE_ACCOUNT_ID
12
+ # 3. Set the project name below (line: projectName).
13
+ # 4. Delete .github/workflows/deploy.yml if you're not using GitHub Pages.
14
+
15
+ on:
16
+ push:
17
+ branches: [main]
18
+ workflow_dispatch:
19
+
20
+ permissions:
21
+ contents: read
22
+ deployments: write
23
+
24
+ jobs:
25
+ deploy:
26
+ name: Deploy
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - name: Checkout
30
+ uses: actions/checkout@v4
31
+
32
+ - name: Setup Bun
33
+ uses: oven-sh/setup-bun@v2
34
+ with:
35
+ bun-version: latest
36
+
37
+ - name: Install dependencies
38
+ run: bun install --frozen-lockfile
39
+
40
+ - name: Build site
41
+ run: bun run build
42
+
43
+ - name: Publish to Cloudflare Pages
44
+ uses: cloudflare/pages-action@v1
45
+ with:
46
+ apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
47
+ accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
48
+ projectName: your-project-name # ← change to your CF Pages project name
49
+ directory: dist
50
+ gitHubToken: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,47 @@
1
+ name: Deploy to Vercel
2
+
3
+ # Optional. Most teams just connect their Git repo to Vercel and let Vercel
4
+ # auto-deploy on push (no workflow needed). Use this only if you want CI to
5
+ # control the deploy — for example, to gate behind a typecheck/lint step.
6
+ #
7
+ # Setup:
8
+ # 1. Install Vercel CLI in this repo: `bun add -d vercel`
9
+ # 2. Run `vercel link` once locally to attach the project.
10
+ # 3. Add three GitHub secrets:
11
+ # - VERCEL_TOKEN (from vercel.com/account/tokens)
12
+ # - VERCEL_ORG_ID (from .vercel/project.json after link)
13
+ # - VERCEL_PROJECT_ID (from .vercel/project.json after link)
14
+ # 4. Delete .github/workflows/deploy.yml (the GitHub Pages workflow) if you're not using Pages.
15
+
16
+ on:
17
+ push:
18
+ branches: [main]
19
+ workflow_dispatch:
20
+
21
+ permissions:
22
+ contents: read
23
+
24
+ jobs:
25
+ deploy:
26
+ name: Deploy
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - name: Checkout
30
+ uses: actions/checkout@v4
31
+
32
+ - name: Setup Bun
33
+ uses: oven-sh/setup-bun@v2
34
+ with:
35
+ bun-version: latest
36
+
37
+ - name: Install dependencies
38
+ run: bun install --frozen-lockfile
39
+
40
+ - name: Pull Vercel environment
41
+ run: bunx vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
42
+
43
+ - name: Build for Vercel
44
+ run: bunx vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
45
+
46
+ - name: Deploy
47
+ run: bunx vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}
@@ -0,0 +1,55 @@
1
+ name: Deploy to GitHub Pages
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+ pages: write
11
+ id-token: write
12
+
13
+ concurrency:
14
+ group: pages
15
+ cancel-in-progress: false
16
+
17
+ jobs:
18
+ build:
19
+ name: Build
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v4
24
+
25
+ - name: Setup Bun
26
+ uses: oven-sh/setup-bun@v2
27
+ with:
28
+ bun-version: latest
29
+
30
+ - name: Install dependencies
31
+ run: bun install --frozen-lockfile
32
+
33
+ - name: Build site
34
+ run: bun run build
35
+ env:
36
+ # Astro reads `BASE_URL` if you've set `base:` in astro.config.mjs
37
+ # for project pages. Set it here to match.
38
+ BASE_URL: ${{ vars.BASE_URL || '/' }}
39
+
40
+ - name: Upload Pages artifact
41
+ uses: actions/upload-pages-artifact@v3
42
+ with:
43
+ path: ./dist
44
+
45
+ deploy:
46
+ name: Deploy
47
+ needs: build
48
+ runs-on: ubuntu-latest
49
+ environment:
50
+ name: github-pages
51
+ url: ${{ steps.deployment.outputs.page_url }}
52
+ steps:
53
+ - name: Deploy to GitHub Pages
54
+ id: deployment
55
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,46 @@
1
+ # Abstract Data Documentation Theme — agent context
2
+
3
+ This project uses the **Abstract Data Documentation Theme** (built on Astro Starlight, distributed as `@abstractdata/starlight-theme`). When talking to the user, refer to the product as the **"Abstract Data Documentation Theme"** — not "Astro Starlight" — Starlight is the substrate, not the product identity.
4
+
5
+ ## First-interaction handshake — IMPORTANT
6
+
7
+ When you open a conversation in this project, immediately check the setup state:
8
+
9
+ - **`scripts/python-autodoc.json`** — does it have placeholder values like `searchPath: "../../../python-example/src"` and a `modules` list pointing at `example_module`? Or has it been customized for this project's actual Python source?
10
+ - **`astro.config.mjs`** — is `title: 'Your Project Docs'` still the literal placeholder? Is `site: 'https://example.com'` still the placeholder URL?
11
+
12
+ **If either signal looks like a fresh scaffold,** open the conversation with this offer (don't wait for the user to ask):
13
+
14
+ > "Looks like this is a freshly scaffolded Abstract Data Documentation Theme project. Want me to run the `abstract-data-setup` workflow now? It'll detect your Python source, audit docstring coverage, sniff your docstring style, ask a few config questions, and wire up `python-autodoc.json`, `astro.config.mjs`, and `package.json`. (Reply 'no' if you'd rather configure manually — I won't ask again.)"
15
+
16
+ If the user agrees, immediately invoke the `abstract-data-setup` skill (`.claude/skills/abstract-data-setup/SKILL.md`).
17
+
18
+ **If setup looks already-done** (JSON has real module names, `astro.config.mjs` has a real title): don't auto-offer the handshake. Just be a normal helpful assistant for whatever the user wants to work on.
19
+
20
+ **Once the user has declined or completed setup:** treat this handshake as satisfied for the rest of the conversation. Don't keep nagging.
21
+
22
+ ## Skill location
23
+
24
+ The full setup workflow lives at `.claude/skills/abstract-data-setup/SKILL.md`. It's an 11-phase procedural skill: confirm context → locate source → detect Python signals → audit docstring coverage → detect docstring style → recommend modules → gather brand config → write configs → optionally run docs:python → optional pre-commit hook → summary.
25
+
26
+ ## Project conventions
27
+
28
+ - **Package manager: Bun** — not npm/yarn/pnpm. Use `bun run <name>` and `bun add <pkg>`.
29
+ - **Commits: Conventional Commits** — release-please reads them to bump versions automatically. `feat:` for minor, `fix:` for patch, `feat!:` or `BREAKING CHANGE:` for major.
30
+ - **Don't hand-edit:** `.cursor/rules/abstract-data-setup.mdc`, `.github/copilot-instructions.md`, `.cursor/rules/welcome.mdc` — these are auto-generated.
31
+
32
+ ## Quick reference
33
+
34
+ - `astro.config.mjs` — Starlight config: title, sidebar, plugin options
35
+ - `scripts/python-autodoc.json` — Python autodoc target config
36
+ - `scripts/build-python-docs.mjs` — orchestrator that wraps pydoc-markdown
37
+ - `src/content/docs/` — Markdown/MDX content
38
+ - `bun run dev` — start the docs dev server
39
+ - `bun run docs:python` — regenerate API pages from Python source
40
+ - `bun run build` — production build
41
+
42
+ ## Links
43
+
44
+ - Source repo: https://github.com/Abstract-Data/abstract-data-doc-theme
45
+ - Theme on npm: https://www.npmjs.com/package/@abstractdata/starlight-theme
46
+ - Scaffolder on npm: https://www.npmjs.com/package/@abstractdata/create-docs
@@ -0,0 +1,75 @@
1
+ # Abstract Data Docs Template
2
+
3
+ Starter Starlight documentation site with the [`@abstractdata/starlight-theme`](https://github.com/Abstract-Data/abstract-data-doc-theme) already wired in.
4
+
5
+ ## Use this template
6
+
7
+ **The fastest path** — use the `@abstractdata/create-docs` CLI:
8
+
9
+ ```bash
10
+ bun create @abstractdata/docs my-docs
11
+ cd my-docs
12
+ bun install
13
+ bun dev
14
+ ```
15
+
16
+ The CLI copies this template into a fresh folder, swaps `workspace:*` for a real published version of the theme, sets your project name in `package.json` and `astro.config.mjs`, and runs `git init` so you have a clean history from step zero.
17
+
18
+ **Alternative — clone manually:**
19
+
20
+ Click **"Use this template"** on the GitHub repo (or fork it) to create a new repo from this code, then:
21
+
22
+ ```bash
23
+ git clone https://github.com/your-org/your-new-repo.git
24
+ cd your-new-repo
25
+ bun install
26
+ bun dev
27
+ ```
28
+
29
+ > **If you copied this folder out of the monorepo manually**, change the `@abstractdata/starlight-theme` dependency in `package.json` from `"workspace:*"` to a real version like `"^0.3.0"` before running `bun install`.
30
+
31
+ ## Customize
32
+
33
+ See [`src/content/docs/quickstart.md`](./src/content/docs/quickstart.md) — it walks through what to change in `astro.config.mjs`, where to drop your logo, and how to toggle motion / credit / version.
34
+
35
+ ### Auto-setup with your AI coding assistant
36
+
37
+ This template ships the `abstract-data-setup` workflow in three formats so it works regardless of which AI assistant you use:
38
+
39
+ | Tool | File | Fidelity |
40
+ |---|---|---|
41
+ | **Claude Code** | `.claude/skills/abstract-data-setup/SKILL.md` | full procedural workflow |
42
+ | **Cursor** | `.cursor/rules/abstract-data-setup.mdc` | full procedural workflow |
43
+ | **GitHub Copilot** | `.github/copilot-instructions.md` | static reference (Copilot can't natively run interactive prompts) |
44
+
45
+ Open your tool of choice in this folder and say **"set up docs"** (or "wire up Python autodoc", "configure docs", "audit docstrings", etc.). The workflow detects your source project, audits docstring coverage, sniffs docstring style, asks a few configuration questions, and writes the right files (`scripts/python-autodoc.json`, `astro.config.mjs` sidebar + plugin config, `package.json` scripts).
46
+
47
+ If you only use one tool, delete the other adapter folders — they're independent files.
48
+
49
+ The Claude Code SKILL.md is the source of truth; the Cursor and Copilot files are auto-generated from it. (Edit the SKILL.md and run `bun run sync-skills` if you're working in the monorepo.)
50
+
51
+ Round 1 covers Python projects. TypeScript, Next.js, TanStack, OpenAPI, and other detectors are planned for follow-up rounds.
52
+
53
+ ## Deploy to GitHub Pages
54
+
55
+ The workflow at `.github/workflows/deploy.yml` is preconfigured. To enable:
56
+
57
+ 1. **Repo Settings → Pages → Source:** select **"GitHub Actions"**.
58
+ 2. **Push to `main`.** The workflow builds with Bun and publishes to Pages.
59
+ 3. **For project pages** (e.g. `username.github.io/your-repo`), uncomment the `base:` line in `astro.config.mjs` and set it to `/your-repo-name`.
60
+
61
+ ## Other deploy targets
62
+
63
+ The output is plain static HTML — drop `dist/` on any host:
64
+
65
+ - **Vercel** — easiest: connect the repo at vercel.com → New Project. Vercel auto-detects Astro and deploys on every push. No workflow needed. If you want CI control, use `.github/workflows/deploy-vercel.yml` (delete the GitHub Pages workflow first).
66
+ - **Cloudflare Pages** — easiest: connect at dash.cloudflare.com/?to=/:account/pages → Create Project. Same flow as Vercel. If you want CI control, use `.github/workflows/deploy-cloudflare.yml`.
67
+ - **Netlify** — same auto-deploy pattern. Drop a `netlify.toml` if you need to override.
68
+
69
+ ## Update the theme
70
+
71
+ ```bash
72
+ bun update @abstractdata/starlight-theme
73
+ ```
74
+
75
+ Bun pulls the latest minor/patch within your semver range. Major versions are opt-in.
@@ -0,0 +1,69 @@
1
+ import { defineConfig } from 'astro/config';
2
+ import starlight from '@astrojs/starlight';
3
+ import abstractData from '@abstractdata/starlight-theme';
4
+ import starlightLinksValidator from 'starlight-links-validator';
5
+
6
+ // https://astro.build/config
7
+ export default defineConfig({
8
+ // ⬇️ Set to your production URL before going live (sitemap depends on it).
9
+ site: 'https://example.com',
10
+
11
+ // ⬇️ Uncomment if deploying to a project page (e.g. github.io/<repo>/).
12
+ // base: '/your-repo-name',
13
+
14
+ integrations: [
15
+ starlight({
16
+ // ⬇️ Replace with your project name.
17
+ title: 'Your Project Docs',
18
+ description: 'Branded documentation by Abstract Data.',
19
+
20
+ // ⬇️ Replace with your logo. Place it in `src/assets/`.
21
+ // logo: { src: './src/assets/your-logo.png', replacesTitle: true },
22
+
23
+ // ⬇️ Replace or remove.
24
+ social: [
25
+ {
26
+ icon: 'github',
27
+ label: 'GitHub',
28
+ href: 'https://github.com/your-org/your-repo',
29
+ },
30
+ ],
31
+
32
+ // ⬇️ Show "Last updated" timestamps on every page (read from git).
33
+ // Requires the repo to be a git checkout at build time.
34
+ lastUpdated: true,
35
+
36
+ // ⬇️ Show an "Edit page" link in the footer of every doc.
37
+ // Uncomment and replace once your repo URL is final.
38
+ // editLink: {
39
+ // baseUrl: 'https://github.com/your-org/your-repo/edit/main/',
40
+ // },
41
+
42
+ // ⬇️ Customize your sidebar.
43
+ sidebar: [
44
+ {
45
+ label: 'Get Started',
46
+ items: [
47
+ { label: 'Welcome', slug: 'index' },
48
+ { label: 'Quickstart', slug: 'quickstart' },
49
+ ],
50
+ },
51
+ ],
52
+
53
+ plugins: [
54
+ abstractData({
55
+ // 'full' = HUD with animations · 'calm' = no motion (recommended for client docs)
56
+ motion: 'calm',
57
+ // 'auto' = "Built by Abstract Data" credit visible · 'hide' = white-label
58
+ credit: 'auto',
59
+ // Optional version chip in the header. Omit to hide.
60
+ // version: 'v1.0.0',
61
+ }),
62
+ // Fails the build on broken internal links — run on every PR.
63
+ // Set `errorOnFallbackPages: false` if you only build a subset
64
+ // of locales in dev.
65
+ starlightLinksValidator(),
66
+ ],
67
+ }),
68
+ ],
69
+ });
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@abstractdata/docs-template",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "description": "Abstract Data documentation template — clone this for new client doc projects.",
6
+ "type": "module",
7
+ "scripts": {
8
+ "dev": "astro dev",
9
+ "build": "astro check && astro build",
10
+ "preview": "astro preview",
11
+ "typecheck": "astro check",
12
+ "docs:python": "node scripts/build-python-docs.mjs",
13
+ "docs:ts": "node scripts/build-ts-docs.mjs"
14
+ },
15
+ "dependencies": {
16
+ "@abstractdata/starlight-theme": "workspace:*",
17
+ "@astrojs/starlight": "~0.37.0",
18
+ "astro": "^5.10.0",
19
+ "sharp": "^0.33.5",
20
+ "starlight-links-validator": "^0.16.0"
21
+ },
22
+ "devDependencies": {
23
+ "typescript": "^5.6.0"
24
+ }
25
+ }
@@ -0,0 +1,26 @@
1
+ <svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <style>
3
+ @media (prefers-color-scheme: light) {
4
+ .background { fill: black; }
5
+ .foreground { fill: white; }
6
+ }
7
+ @media (prefers-color-scheme: dark) {
8
+ .background { fill: white; }
9
+ .foreground { fill: black; }
10
+ }
11
+ </style>
12
+ <g clip-path="url(#clip0_7960_43945)">
13
+ <rect class="background" width="180" height="180" rx="37" />
14
+ <g style="transform: scale(95%); transform-origin: center">
15
+ <path class="foreground"
16
+ d="M101.141 53H136.632C151.023 53 162.689 64.6662 162.689 79.0573V112.904H148.112V79.0573C148.112 78.7105 148.098 78.3662 148.072 78.0251L112.581 112.898C112.701 112.902 112.821 112.904 112.941 112.904H148.112V126.672H112.941C98.5504 126.672 86.5638 114.891 86.5638 100.5V66.7434H101.141V100.5C101.141 101.15 101.191 101.792 101.289 102.422L137.56 66.7816C137.255 66.7563 136.945 66.7434 136.632 66.7434H101.141V53Z" />
17
+ <path class="foreground"
18
+ d="M65.2926 124.136L14 66.7372H34.6355L64.7495 100.436V66.7372H80.1365V118.47C80.1365 126.278 70.4953 129.958 65.2926 124.136Z" />
19
+ </g>
20
+ </g>
21
+ <defs>
22
+ <clipPath id="clip0_7960_43945">
23
+ <rect width="180" height="180" fill="white" />
24
+ </clipPath>
25
+ </defs>
26
+ </svg>