pilothub 0.0.1 → 0.0.2
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.
- package/LICENSE +1 -0
- package/README.md +36 -129
- package/dist/browserAuth.d.ts +20 -0
- package/dist/browserAuth.js +156 -0
- package/dist/browserAuth.js.map +1 -0
- package/dist/browserAuth.test.d.ts +1 -0
- package/dist/browserAuth.test.js +83 -0
- package/dist/browserAuth.test.js.map +1 -0
- package/dist/cli/buildInfo.d.ts +3 -0
- package/dist/cli/buildInfo.js +103 -0
- package/dist/cli/buildInfo.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +9 -0
- package/dist/cli/commands/auth.js +75 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/delete.d.ts +11 -0
- package/dist/cli/commands/delete.js +67 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/delete.test.d.ts +1 -0
- package/dist/cli/commands/delete.test.js +52 -0
- package/dist/cli/commands/delete.test.js.map +1 -0
- package/dist/cli/commands/publish.d.ts +9 -0
- package/dist/cli/commands/publish.js +87 -0
- package/dist/cli/commands/publish.js.map +1 -0
- package/dist/cli/commands/publish.test.d.ts +1 -0
- package/dist/cli/commands/publish.test.js +104 -0
- package/dist/cli/commands/publish.test.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +23 -0
- package/dist/cli/commands/skills.js +298 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/skills.test.d.ts +1 -0
- package/dist/cli/commands/skills.test.js +156 -0
- package/dist/cli/commands/skills.test.js.map +1 -0
- package/dist/cli/commands/star.d.ts +8 -0
- package/dist/cli/commands/star.js +38 -0
- package/dist/cli/commands/star.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +3 -0
- package/dist/cli/commands/sync.js +160 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/sync.test.d.ts +1 -0
- package/dist/cli/commands/sync.test.js +277 -0
- package/dist/cli/commands/sync.test.js.map +1 -0
- package/dist/cli/commands/syncHelpers.d.ts +76 -0
- package/dist/cli/commands/syncHelpers.js +349 -0
- package/dist/cli/commands/syncHelpers.js.map +1 -0
- package/dist/cli/commands/syncHelpers.test.d.ts +1 -0
- package/dist/cli/commands/syncHelpers.test.js +22 -0
- package/dist/cli/commands/syncHelpers.test.js.map +1 -0
- package/dist/cli/commands/syncTypes.d.ts +24 -0
- package/dist/cli/commands/syncTypes.js +2 -0
- package/dist/cli/commands/syncTypes.js.map +1 -0
- package/dist/cli/commands/unstar.d.ts +8 -0
- package/dist/cli/commands/unstar.js +38 -0
- package/dist/cli/commands/unstar.js.map +1 -0
- package/dist/cli/helpStyle.d.ts +13 -0
- package/dist/cli/helpStyle.js +38 -0
- package/dist/cli/helpStyle.js.map +1 -0
- package/dist/cli/pilotbotConfig.d.ts +6 -0
- package/dist/cli/pilotbotConfig.js +110 -0
- package/dist/cli/pilotbotConfig.js.map +1 -0
- package/dist/cli/pilotbotConfig.test.d.ts +1 -0
- package/dist/cli/pilotbotConfig.test.js +133 -0
- package/dist/cli/pilotbotConfig.test.js.map +1 -0
- package/dist/cli/registry.d.ts +7 -0
- package/dist/cli/registry.js +42 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli/registry.test.d.ts +1 -0
- package/dist/cli/registry.test.js +48 -0
- package/dist/cli/registry.test.js.map +1 -0
- package/dist/cli/scanSkills.d.ts +7 -0
- package/dist/cli/scanSkills.js +75 -0
- package/dist/cli/scanSkills.js.map +1 -0
- package/dist/cli/scanSkills.test.d.ts +1 -0
- package/dist/cli/scanSkills.test.js +60 -0
- package/dist/cli/scanSkills.test.js.map +1 -0
- package/dist/cli/slug.d.ts +2 -0
- package/dist/cli/slug.js +16 -0
- package/dist/cli/slug.js.map +1 -0
- package/dist/cli/types.d.ts +15 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/ui.d.ts +7 -0
- package/dist/cli/ui.js +72 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +268 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.js +38 -0
- package/dist/config.js.map +1 -0
- package/dist/discovery.d.ts +5 -0
- package/dist/discovery.js +21 -0
- package/dist/discovery.js.map +1 -0
- package/dist/discovery.test.d.ts +1 -0
- package/dist/discovery.test.js +46 -0
- package/dist/discovery.test.js.map +1 -0
- package/dist/http.d.ts +32 -0
- package/dist/http.js +261 -0
- package/dist/http.js.map +1 -0
- package/dist/http.test.d.ts +1 -0
- package/dist/http.test.js +135 -0
- package/dist/http.test.js.map +1 -0
- package/dist/schema/ark.js.map +1 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/routes.js.map +1 -0
- package/{packages/schema/dist → dist/schema}/schemas.d.ts +0 -39
- package/{packages/schema/dist → dist/schema}/schemas.js +0 -22
- package/dist/schema/schemas.js.map +1 -0
- package/dist/schema/textFiles.js.map +1 -0
- package/dist/schema/textFiles.test.d.ts +1 -0
- package/dist/schema/textFiles.test.js +20 -0
- package/dist/schema/textFiles.test.js.map +1 -0
- package/dist/skills.d.ts +43 -0
- package/dist/skills.js +163 -0
- package/dist/skills.js.map +1 -0
- package/dist/skills.test.d.ts +1 -0
- package/dist/skills.test.js +144 -0
- package/dist/skills.test.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +27 -70
- package/.env.local.example +0 -19
- package/.github/workflows/ci.yml +0 -40
- package/.oxlintrc.json +0 -3
- package/AGENTS.md +0 -45
- package/CHANGELOG.md +0 -138
- package/DEPRECATIONS.md +0 -7
- package/biome.json +0 -41
- package/convex/_generated/api.d.ts +0 -153
- package/convex/_generated/api.js +0 -23
- package/convex/_generated/dataModel.d.ts +0 -60
- package/convex/_generated/server.d.ts +0 -143
- package/convex/_generated/server.js +0 -93
- package/convex/auth.config.ts +0 -8
- package/convex/auth.ts +0 -19
- package/convex/comments.ts +0 -88
- package/convex/crons.ts +0 -34
- package/convex/devSeed.ts +0 -459
- package/convex/devSeedExtra.ts +0 -541
- package/convex/downloads.ts +0 -78
- package/convex/githubBackups.ts +0 -170
- package/convex/githubBackupsNode.ts +0 -183
- package/convex/githubImport.ts +0 -317
- package/convex/githubSoulBackups.ts +0 -170
- package/convex/githubSoulBackupsNode.ts +0 -186
- package/convex/http.ts +0 -194
- package/convex/httpApi.handlers.test.ts +0 -488
- package/convex/httpApi.test.ts +0 -70
- package/convex/httpApi.ts +0 -305
- package/convex/httpApiV1.handlers.test.ts +0 -584
- package/convex/httpApiV1.ts +0 -1172
- package/convex/leaderboards.ts +0 -39
- package/convex/lib/access.ts +0 -36
- package/convex/lib/apiTokenAuth.ts +0 -36
- package/convex/lib/badges.ts +0 -50
- package/convex/lib/changelog.test.ts +0 -34
- package/convex/lib/changelog.ts +0 -278
- package/convex/lib/embeddings.ts +0 -38
- package/convex/lib/githubBackup.ts +0 -443
- package/convex/lib/githubImport.test.ts +0 -247
- package/convex/lib/githubImport.ts +0 -425
- package/convex/lib/githubSoulBackup.ts +0 -443
- package/convex/lib/leaderboards.ts +0 -103
- package/convex/lib/moderation.ts +0 -42
- package/convex/lib/public.ts +0 -89
- package/convex/lib/searchText.test.ts +0 -46
- package/convex/lib/searchText.ts +0 -27
- package/convex/lib/skillBackfill.test.ts +0 -34
- package/convex/lib/skillBackfill.ts +0 -67
- package/convex/lib/skillPublish.test.ts +0 -28
- package/convex/lib/skillPublish.ts +0 -284
- package/convex/lib/skillStats.ts +0 -80
- package/convex/lib/skills.test.ts +0 -197
- package/convex/lib/skills.ts +0 -273
- package/convex/lib/soulChangelog.ts +0 -273
- package/convex/lib/soulPublish.ts +0 -236
- package/convex/lib/tokens.test.ts +0 -33
- package/convex/lib/tokens.ts +0 -51
- package/convex/lib/webhooks.test.ts +0 -91
- package/convex/lib/webhooks.ts +0 -112
- package/convex/maintenance.test.ts +0 -270
- package/convex/maintenance.ts +0 -840
- package/convex/rateLimits.ts +0 -50
- package/convex/schema.ts +0 -472
- package/convex/search.test.ts +0 -12
- package/convex/search.ts +0 -254
- package/convex/seed.test.ts +0 -37
- package/convex/seed.ts +0 -254
- package/convex/seedSouls.ts +0 -111
- package/convex/skillStatEvents.ts +0 -568
- package/convex/skills.ts +0 -1606
- package/convex/soulComments.ts +0 -88
- package/convex/soulDownloads.ts +0 -14
- package/convex/soulStars.ts +0 -71
- package/convex/souls.ts +0 -570
- package/convex/stars.ts +0 -108
- package/convex/statsMaintenance.ts +0 -205
- package/convex/telemetry.ts +0 -434
- package/convex/tokens.ts +0 -88
- package/convex/tsconfig.json +0 -7
- package/convex/uploads.ts +0 -20
- package/convex/users.ts +0 -122
- package/convex/webhooks.ts +0 -50
- package/convex.json +0 -3
- package/docs/README.md +0 -32
- package/docs/api.md +0 -51
- package/docs/architecture.md +0 -61
- package/docs/auth.md +0 -54
- package/docs/cli.md +0 -117
- package/docs/deploy.md +0 -78
- package/docs/diffing.md +0 -84
- package/docs/github-import.md +0 -171
- package/docs/http-api.md +0 -187
- package/docs/manual-testing.md +0 -64
- package/docs/mintlify.md +0 -43
- package/docs/quickstart.md +0 -120
- package/docs/skill-format.md +0 -58
- package/docs/soul-format.md +0 -37
- package/docs/spec.md +0 -177
- package/docs/telemetry.md +0 -91
- package/docs/troubleshooting.md +0 -49
- package/docs/webhook.md +0 -51
- package/e2e/menu-smoke.pw.test.ts +0 -49
- package/e2e/pilothub.e2e.test.ts +0 -494
- package/e2e/search-exact.pw.test.ts +0 -97
- package/packages/pilothub/LICENSE +0 -22
- package/packages/pilothub/README.md +0 -57
- package/packages/pilothub/package.json +0 -41
- package/packages/pilothub/src/browserAuth.test.ts +0 -96
- package/packages/pilothub/src/browserAuth.ts +0 -174
- package/packages/pilothub/src/cli/buildInfo.ts +0 -94
- package/packages/pilothub/src/cli/commands/auth.ts +0 -97
- package/packages/pilothub/src/cli/commands/delete.test.ts +0 -73
- package/packages/pilothub/src/cli/commands/delete.ts +0 -83
- package/packages/pilothub/src/cli/commands/publish.test.ts +0 -122
- package/packages/pilothub/src/cli/commands/publish.ts +0 -108
- package/packages/pilothub/src/cli/commands/skills.test.ts +0 -191
- package/packages/pilothub/src/cli/commands/skills.ts +0 -380
- package/packages/pilothub/src/cli/commands/star.ts +0 -46
- package/packages/pilothub/src/cli/commands/sync.test.ts +0 -310
- package/packages/pilothub/src/cli/commands/sync.ts +0 -200
- package/packages/pilothub/src/cli/commands/syncHelpers.test.ts +0 -26
- package/packages/pilothub/src/cli/commands/syncHelpers.ts +0 -427
- package/packages/pilothub/src/cli/commands/syncTypes.ts +0 -27
- package/packages/pilothub/src/cli/commands/unstar.ts +0 -48
- package/packages/pilothub/src/cli/helpStyle.ts +0 -45
- package/packages/pilothub/src/cli/pilotbotConfig.test.ts +0 -159
- package/packages/pilothub/src/cli/pilotbotConfig.ts +0 -147
- package/packages/pilothub/src/cli/registry.test.ts +0 -63
- package/packages/pilothub/src/cli/registry.ts +0 -43
- package/packages/pilothub/src/cli/scanSkills.test.ts +0 -64
- package/packages/pilothub/src/cli/scanSkills.ts +0 -84
- package/packages/pilothub/src/cli/slug.ts +0 -16
- package/packages/pilothub/src/cli/types.ts +0 -12
- package/packages/pilothub/src/cli/ui.ts +0 -75
- package/packages/pilothub/src/cli.ts +0 -311
- package/packages/pilothub/src/config.ts +0 -36
- package/packages/pilothub/src/discovery.test.ts +0 -75
- package/packages/pilothub/src/discovery.ts +0 -19
- package/packages/pilothub/src/http.test.ts +0 -156
- package/packages/pilothub/src/http.ts +0 -301
- package/packages/pilothub/src/schema/ark.ts +0 -29
- package/packages/pilothub/src/schema/index.ts +0 -5
- package/packages/pilothub/src/schema/routes.ts +0 -22
- package/packages/pilothub/src/schema/schemas.ts +0 -260
- package/packages/pilothub/src/schema/textFiles.test.ts +0 -23
- package/packages/pilothub/src/schema/textFiles.ts +0 -66
- package/packages/pilothub/src/skills.test.ts +0 -191
- package/packages/pilothub/src/skills.ts +0 -172
- package/packages/pilothub/src/types.ts +0 -10
- package/packages/pilothub/tsconfig.json +0 -14
- package/packages/schema/README.md +0 -3
- package/packages/schema/dist/ark.js.map +0 -1
- package/packages/schema/dist/index.js.map +0 -1
- package/packages/schema/dist/routes.js.map +0 -1
- package/packages/schema/dist/schemas.js.map +0 -1
- package/packages/schema/dist/textFiles.js.map +0 -1
- package/packages/schema/package.json +0 -26
- package/packages/schema/src/ark.ts +0 -29
- package/packages/schema/src/index.ts +0 -5
- package/packages/schema/src/routes.ts +0 -22
- package/packages/schema/src/schemas.test.ts +0 -123
- package/packages/schema/src/schemas.ts +0 -287
- package/packages/schema/src/textFiles.test.ts +0 -23
- package/packages/schema/src/textFiles.ts +0 -66
- package/packages/schema/tsconfig.json +0 -15
- package/pilothub +0 -46
- package/playwright.config.ts +0 -33
- package/public/.well-known/pilothub.json +0 -6
- package/public/api/v1/openapi.json +0 -379
- package/public/favicon.ico +0 -0
- package/public/logo192.png +0 -0
- package/public/logo512.png +0 -0
- package/public/manifest.json +0 -25
- package/public/og.png +0 -0
- package/public/og.svg +0 -98
- package/public/pilot-logo.png +0 -0
- package/public/pilot-mark.png +0 -0
- package/public/robots.txt +0 -3
- package/public/tanstack-circle-logo.png +0 -0
- package/public/tanstack-word-logo-white.svg +0 -1
- package/scripts/check-peer-deps.ts +0 -56
- package/scripts/docs-list.ts +0 -148
- package/scripts/run-playwright-local.sh +0 -14
- package/server/og/fetchSkillOgMeta.ts +0 -27
- package/server/og/fetchSoulOgMeta.ts +0 -27
- package/server/og/ogAssets.ts +0 -80
- package/server/og/skillOgSvg.test.ts +0 -59
- package/server/og/skillOgSvg.ts +0 -258
- package/server/og/soulOgSvg.ts +0 -209
- package/server/routes/og/skill.png.ts +0 -103
- package/server/routes/og/soul.png.ts +0 -111
- package/src/__tests__/skill-detail-page.test.tsx +0 -86
- package/src/__tests__/skills-index.test.tsx +0 -145
- package/src/__tests__/upload.route.test.tsx +0 -228
- package/src/components/AppProviders.tsx +0 -19
- package/src/components/ClientOnly.tsx +0 -18
- package/src/components/Footer.tsx +0 -29
- package/src/components/Header.tsx +0 -295
- package/src/components/InstallSwitcher.tsx +0 -53
- package/src/components/SkillCard.tsx +0 -36
- package/src/components/SkillDetailPage.tsx +0 -817
- package/src/components/SkillDiffCard.tsx +0 -485
- package/src/components/SoulCard.tsx +0 -19
- package/src/components/SoulDetailPage.tsx +0 -263
- package/src/components/UserBootstrap.tsx +0 -18
- package/src/components/ui/dropdown-menu.tsx +0 -67
- package/src/components/ui/toggle-group.tsx +0 -35
- package/src/convex/client.ts +0 -3
- package/src/lib/badges.ts +0 -29
- package/src/lib/diffing.test.ts +0 -163
- package/src/lib/diffing.ts +0 -106
- package/src/lib/gravatar.test.ts +0 -9
- package/src/lib/gravatar.ts +0 -158
- package/src/lib/og.test.ts +0 -142
- package/src/lib/og.ts +0 -156
- package/src/lib/publicUser.ts +0 -39
- package/src/lib/roles.ts +0 -19
- package/src/lib/site.test.ts +0 -130
- package/src/lib/site.ts +0 -84
- package/src/lib/theme-transition.test.ts +0 -134
- package/src/lib/theme-transition.ts +0 -134
- package/src/lib/theme.test.tsx +0 -88
- package/src/lib/theme.ts +0 -43
- package/src/lib/uploadFiles.jsdom.test.ts +0 -33
- package/src/lib/uploadFiles.test.ts +0 -123
- package/src/lib/uploadFiles.ts +0 -245
- package/src/lib/uploadUtils.test.ts +0 -78
- package/src/lib/uploadUtils.ts +0 -93
- package/src/lib/useAuthStatus.ts +0 -12
- package/src/lib/utils.test.ts +0 -9
- package/src/lib/utils.ts +0 -6
- package/src/logo.svg +0 -12
- package/src/routeTree.gen.ts +0 -345
- package/src/router.tsx +0 -17
- package/src/routes/$owner/$slug.tsx +0 -55
- package/src/routes/__root.tsx +0 -136
- package/src/routes/admin.tsx +0 -11
- package/src/routes/cli/auth.tsx +0 -168
- package/src/routes/dashboard.tsx +0 -97
- package/src/routes/import.tsx +0 -415
- package/src/routes/index.tsx +0 -252
- package/src/routes/management.tsx +0 -529
- package/src/routes/settings.tsx +0 -203
- package/src/routes/skills/index.tsx +0 -422
- package/src/routes/souls/$slug.tsx +0 -55
- package/src/routes/souls/index.tsx +0 -243
- package/src/routes/stars.tsx +0 -68
- package/src/routes/u/$handle.tsx +0 -307
- package/src/routes/upload/utils.ts +0 -81
- package/src/routes/upload.tsx +0 -499
- package/src/styles.css +0 -2718
- package/tsconfig.json +0 -24
- package/tsconfig.oxlint.json +0 -16
- package/vercel.json +0 -8
- package/vite.config.ts +0 -48
- package/vitest.config.ts +0 -47
- package/vitest.e2e.config.ts +0 -11
- package/vitest.setup.ts +0 -1
- /package/{packages/pilothub/bin → bin}/pilothub.js +0 -0
- /package/{packages/schema/dist → dist/schema}/ark.d.ts +0 -0
- /package/{packages/schema/dist → dist/schema}/ark.js +0 -0
- /package/{packages/schema/dist → dist/schema}/index.d.ts +0 -0
- /package/{packages/schema/dist → dist/schema}/index.js +0 -0
- /package/{packages/schema/dist → dist/schema}/routes.d.ts +0 -0
- /package/{packages/schema/dist → dist/schema}/routes.js +0 -0
- /package/{packages/schema/dist → dist/schema}/textFiles.d.ts +0 -0
- /package/{packages/schema/dist → dist/schema}/textFiles.js +0 -0
package/docs/diffing.md
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Skill version diffing mode (Monaco-backed)"
|
|
3
|
-
read_when:
|
|
4
|
-
- Implementing skill diff UI
|
|
5
|
-
- Adding version comparisons
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Diffing mode
|
|
9
|
-
|
|
10
|
-
## Goals
|
|
11
|
-
- Compare any file between two versions.
|
|
12
|
-
- Default compare: `latest` vs `previous` (SemVer precedence).
|
|
13
|
-
- UX feels native to PilotHub (theme + typography + motion).
|
|
14
|
-
- Inline or side-by-side toggle.
|
|
15
|
-
- Public access.
|
|
16
|
-
|
|
17
|
-
## UX
|
|
18
|
-
- Diff card on skill detail page.
|
|
19
|
-
- Two selectors: Left/Right.
|
|
20
|
-
- Items: version strings, plus tags (e.g. `latest`), plus `previous`.
|
|
21
|
-
- Default: Left = `previous`, Right = `latest`.
|
|
22
|
-
- File list with status: added / removed / changed / same.
|
|
23
|
-
- Default file: `SKILL.md` if present; else first changed file.
|
|
24
|
-
- Toggle: Inline vs Side-by-side.
|
|
25
|
-
- Show size guard message when file > 200KB.
|
|
26
|
-
|
|
27
|
-
## SemVer ordering
|
|
28
|
-
- Use SemVer precedence to sort versions.
|
|
29
|
-
- `previous` = immediate predecessor of `latest` by SemVer.
|
|
30
|
-
- If `latest` missing or only one version:
|
|
31
|
-
- Disable `previous` and show empty-state copy.
|
|
32
|
-
|
|
33
|
-
## Data sources
|
|
34
|
-
- Versions: `api.skills.listVersions` (all, not just latest 10).
|
|
35
|
-
- Tags: `skill.tags` map.
|
|
36
|
-
- File list: `version.files` with `path`, `sha256`, `size`.
|
|
37
|
-
|
|
38
|
-
## API
|
|
39
|
-
Add action:
|
|
40
|
-
- `skills.getFileText({ versionId, path }) -> { text, size, sha256 }`
|
|
41
|
-
- Validate version exists + file path exists in version.
|
|
42
|
-
- Enforce size <= 200KB (both in action and client).
|
|
43
|
-
- Use `fetchText` from `convex/lib/skillPublish.ts`.
|
|
44
|
-
|
|
45
|
-
Optional helper action:
|
|
46
|
-
- `skills.getVersionFiles({ versionId }) -> files[]`
|
|
47
|
-
- If we want lightweight fetch without full version object.
|
|
48
|
-
|
|
49
|
-
## Client flow
|
|
50
|
-
1. Fetch versions + tags.
|
|
51
|
-
2. Resolve default compare pair:
|
|
52
|
-
- Right = tag `latest` if present else highest SemVer.
|
|
53
|
-
- Left = `previous` (SemVer predecessor).
|
|
54
|
-
3. Build file union by path.
|
|
55
|
-
4. For selected file:
|
|
56
|
-
- Fetch left/right text (guard by size).
|
|
57
|
-
- Feed into Monaco diff editor.
|
|
58
|
-
|
|
59
|
-
## Monaco theming
|
|
60
|
-
- Define `pilothub-light` / `pilothub-dark` via `monaco.editor.defineTheme`.
|
|
61
|
-
- Derive colors from CSS variables on `document.documentElement`:
|
|
62
|
-
- `--surface`, `--surface-muted`, `--ink`, `--ink-soft`, `--line`, `--accent`.
|
|
63
|
-
- Apply theme on load + when theme changes (`data-theme`).
|
|
64
|
-
- Match font: `var(--font-mono)`.
|
|
65
|
-
- Set diff options:
|
|
66
|
-
- `renderSideBySide` toggle
|
|
67
|
-
- `diffAlgorithm: 'advanced'`
|
|
68
|
-
- `renderSideBySideInlineBreakpoint` for mobile
|
|
69
|
-
- `wordWrap: 'on'`
|
|
70
|
-
|
|
71
|
-
## Edge cases
|
|
72
|
-
- File removed/added: show empty buffer on missing side + label.
|
|
73
|
-
- Non-text file should not exist (upload rejects), but still guard.
|
|
74
|
-
- Large file: show size warning + disable fetch.
|
|
75
|
-
- Missing version: show error state.
|
|
76
|
-
|
|
77
|
-
## Perf
|
|
78
|
-
- Cache file text per version+path in client state.
|
|
79
|
-
- Debounce selector changes (100-200ms).
|
|
80
|
-
- Limit concurrent fetches to 2.
|
|
81
|
-
|
|
82
|
-
## Tests
|
|
83
|
-
- Unit: SemVer ordering + `previous` selection.
|
|
84
|
-
- Component: default selectors, tag inclusion, size guard.
|
package/docs/github-import.md
DELETED
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: 'Feature spec: import a skill from a public GitHub URL (auto-detect SKILL.md, selective file upload, provenance).'
|
|
3
|
-
read_when:
|
|
4
|
-
- Adding GitHub import (web + API)
|
|
5
|
-
- Reviewing safety limits (SSRF/zip-bombs)
|
|
6
|
-
- Implementing provenance + canonical-claim flows
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# GitHub import (public repos)
|
|
10
|
-
|
|
11
|
-
Goal: paste a GitHub URL → auto-detect skill → preview files → publish (selective) → persist provenance.
|
|
12
|
-
|
|
13
|
-
Non-goal (v1): private repos (no OAuth/PAT support).
|
|
14
|
-
|
|
15
|
-
Related:
|
|
16
|
-
- `docs/skill-format.md` (what counts as a skill; text-only limits)
|
|
17
|
-
- `docs/api.md` / `docs/http-api.md` (REST patterns + auth)
|
|
18
|
-
|
|
19
|
-
## UX
|
|
20
|
-
|
|
21
|
-
Upload page: “Import from GitHub” mode.
|
|
22
|
-
|
|
23
|
-
Flow:
|
|
24
|
-
1) URL input
|
|
25
|
-
2) Detect skill candidates (SKILL.md)
|
|
26
|
-
3) If multiple candidates: choose one
|
|
27
|
-
4) File picker: check/uncheck; smart-select referenced files
|
|
28
|
-
5) Confirm slug/name/version/tags
|
|
29
|
-
6) Import → publish
|
|
30
|
-
|
|
31
|
-
## Accepted URLs
|
|
32
|
-
|
|
33
|
-
Allowlist: `https://github.com/...` only.
|
|
34
|
-
|
|
35
|
-
Supported shapes:
|
|
36
|
-
- Repo root: `https://github.com/<owner>/<repo>`
|
|
37
|
-
- Tree path: `https://github.com/<owner>/<repo>/tree/<ref>/<path>`
|
|
38
|
-
- Blob path (file): `https://github.com/<owner>/<repo>/blob/<ref>/<path>`
|
|
39
|
-
|
|
40
|
-
Normalization:
|
|
41
|
-
- Strip query/hash for fetch.
|
|
42
|
-
- From `blob/.../SKILL.md` derive `path` as parent folder.
|
|
43
|
-
- If `ref` missing: use `HEAD`.
|
|
44
|
-
|
|
45
|
-
Reject:
|
|
46
|
-
- Non-GitHub hosts.
|
|
47
|
-
- Unknown URL patterns.
|
|
48
|
-
- Paths containing `..` after normalization.
|
|
49
|
-
|
|
50
|
-
## Fetch strategy (public)
|
|
51
|
-
|
|
52
|
-
Download archive:
|
|
53
|
-
- `https://github.com/<owner>/<repo>/archive/<ref>.zip`
|
|
54
|
-
- Follow redirects. Final redirect usually pins a commit via `codeload.github.com/.../zip/<sha-or-branch>`.
|
|
55
|
-
|
|
56
|
-
Unzip server-side (Node or Convex node action). Scan for skill candidates.
|
|
57
|
-
|
|
58
|
-
Skill candidate definition:
|
|
59
|
-
- Any folder containing `SKILL.md` or `skill.md` (also accept `skills.md` for compatibility).
|
|
60
|
-
- Treat repo root as a folder too.
|
|
61
|
-
|
|
62
|
-
Multiple skills:
|
|
63
|
-
- Return candidate list: `{ path, frontmatter.name, frontmatter.description }`.
|
|
64
|
-
- User chooses one.
|
|
65
|
-
|
|
66
|
-
## Smart file selection
|
|
67
|
-
|
|
68
|
-
Defaults:
|
|
69
|
-
- Always select `SKILL.md` (or chosen readme file).
|
|
70
|
-
- Prefer selecting only within chosen skill folder; allow “include out-of-folder refs” if explicitly toggled.
|
|
71
|
-
|
|
72
|
-
Referenced file expansion:
|
|
73
|
-
- Parse Markdown links/images from selected `.md` files:
|
|
74
|
-
- `[](<rel>)`, ``, `<rel>` only when relative.
|
|
75
|
-
- Ignore `http(s):`, `mailto:`, `#anchors`.
|
|
76
|
-
- Strip query/hash from relative targets.
|
|
77
|
-
- Resolve against the current file’s directory.
|
|
78
|
-
- Normalize, reject escapes (`..`).
|
|
79
|
-
- Add referenced file if present in archive and is text-allowed.
|
|
80
|
-
- Recurse for newly added `.md` files.
|
|
81
|
-
|
|
82
|
-
Hard caps:
|
|
83
|
-
- Max recursion depth (e.g. 4).
|
|
84
|
-
- Max referenced additions (e.g. 200).
|
|
85
|
-
|
|
86
|
-
UI affordances:
|
|
87
|
-
- “Select referenced”
|
|
88
|
-
- “Select all text”
|
|
89
|
-
- “Clear”
|
|
90
|
-
- Search/filter by path
|
|
91
|
-
|
|
92
|
-
## Publish behavior
|
|
93
|
-
|
|
94
|
-
Server publishes using existing pipeline:
|
|
95
|
-
- Text-only enforced (see `docs/skill-format.md`).
|
|
96
|
-
- Total ≤ 50MB (selected set).
|
|
97
|
-
- Must include `SKILL.md` (or accepted variant).
|
|
98
|
-
|
|
99
|
-
Suggested defaults (UI):
|
|
100
|
-
- `displayName`: frontmatter `name` else folder basename → title case.
|
|
101
|
-
- `slug`: sanitize folder basename; if collision, suffix (`-2`, `-3`, …).
|
|
102
|
-
- `version`: if new skill → `0.1.0`; if updating own existing skill → bump patch.
|
|
103
|
-
- `tags`: default `latest`.
|
|
104
|
-
|
|
105
|
-
## Provenance (persist source)
|
|
106
|
-
|
|
107
|
-
Persist on each published version (server-side injection; no mutation of imported files):
|
|
108
|
-
- Store in `skillVersions.parsed.metadata.source`:
|
|
109
|
-
|
|
110
|
-
Example:
|
|
111
|
-
```json
|
|
112
|
-
{
|
|
113
|
-
"kind": "github",
|
|
114
|
-
"url": "https://github.com/visionik/ouracli",
|
|
115
|
-
"repo": "visionik/ouracli",
|
|
116
|
-
"ref": "HEAD",
|
|
117
|
-
"commit": "66ac8fb266b7c5ff6519431862be6a375bbfb883",
|
|
118
|
-
"path": "",
|
|
119
|
-
"importedAt": 1767930000000
|
|
120
|
-
}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Why `parsed.metadata`:
|
|
124
|
-
- Already optional and stored with each version.
|
|
125
|
-
- No schema churn for v1.
|
|
126
|
-
|
|
127
|
-
Future: canonical-claim
|
|
128
|
-
- “claim canonical” can key off `{ kind:'github', repo, path }`.
|
|
129
|
-
- Prefer commit-pinned provenance for auditability; allow UI to show “Imported from …”.
|
|
130
|
-
|
|
131
|
-
## API sketch (internal actions)
|
|
132
|
-
|
|
133
|
-
Two-step (recommended):
|
|
134
|
-
- `previewGitHubImport(url)` → `{ commit, candidates:[...], files:[...], defaults:{...} }`
|
|
135
|
-
- `importGitHubSkill({ url, commit, candidatePath, selectedPaths, slug, displayName, version, tags })`
|
|
136
|
-
|
|
137
|
-
Notes:
|
|
138
|
-
- `importGitHubSkill` should re-fetch by pinned `commit` (not floating branch), to avoid TOCTOU.
|
|
139
|
-
- Validate `selectedPaths` subset of fetched archive manifest.
|
|
140
|
-
|
|
141
|
-
## Security / abuse controls
|
|
142
|
-
|
|
143
|
-
SSRF:
|
|
144
|
-
- Only `github.com` (+ `codeload.github.com` during redirect follow).
|
|
145
|
-
- No arbitrary redirects to other hosts.
|
|
146
|
-
|
|
147
|
-
Zip safety:
|
|
148
|
-
- Max compressed bytes (from `Content-Length` if present; else streaming cap).
|
|
149
|
-
- Max uncompressed total bytes.
|
|
150
|
-
- Max file count.
|
|
151
|
-
- Max single file size.
|
|
152
|
-
- Reject symlinks; reject absolute paths; reject `..` segments.
|
|
153
|
-
|
|
154
|
-
Rate limits:
|
|
155
|
-
- Tie to existing write limits (import == publish).
|
|
156
|
-
- Cache preview results briefly (e.g. 60s) keyed by `{repo, commit}`.
|
|
157
|
-
|
|
158
|
-
Error UX:
|
|
159
|
-
- “No SKILL.md found.”
|
|
160
|
-
- “Multiple skills found; pick one.”
|
|
161
|
-
- “Repo too large / too many files.”
|
|
162
|
-
- “Selected files exceed 50MB.”
|
|
163
|
-
|
|
164
|
-
## Manual test checklist
|
|
165
|
-
|
|
166
|
-
- Repo root skill (`SKILL.md` at root).
|
|
167
|
-
- Nested skill (`skills/foo/SKILL.md`).
|
|
168
|
-
- Multi-skill repo (two SKILL.md).
|
|
169
|
-
- SKILL.md references `docs/usage.md` + images; smart-select picks `.md` and referenced text files; ignores external links.
|
|
170
|
-
- Huge repo → clean “too large” error.
|
|
171
|
-
- Redirect pinning → import stores commit sha in provenance.
|
package/docs/http-api.md
DELETED
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: 'HTTP API reference (public + CLI endpoints + auth).'
|
|
3
|
-
read_when:
|
|
4
|
-
- Adding/changing endpoints
|
|
5
|
-
- Debugging CLI ↔ registry requests
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# HTTP API
|
|
9
|
-
|
|
10
|
-
Base URL: `https://pilothub.com` (default).
|
|
11
|
-
|
|
12
|
-
All v1 paths are under `/api/v1/...` and implemented by Convex HTTP routes (`convex/http.ts`).
|
|
13
|
-
Legacy `/api/...` and `/api/cli/...` remain for compatibility (see `DEPRECATIONS.md`).
|
|
14
|
-
OpenAPI: `/api/v1/openapi.json`.
|
|
15
|
-
|
|
16
|
-
## Rate limits
|
|
17
|
-
|
|
18
|
-
Enforced per IP + per API key:
|
|
19
|
-
|
|
20
|
-
- Read: 120/min per IP, 600/min per key
|
|
21
|
-
- Write: 30/min per IP, 120/min per key
|
|
22
|
-
|
|
23
|
-
Headers:
|
|
24
|
-
|
|
25
|
-
- `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`, `Retry-After` (when limited)
|
|
26
|
-
|
|
27
|
-
## Public endpoints (no auth)
|
|
28
|
-
|
|
29
|
-
### `GET /api/v1/search`
|
|
30
|
-
|
|
31
|
-
Query params:
|
|
32
|
-
|
|
33
|
-
- `q` (required): query string
|
|
34
|
-
- `limit` (optional): integer
|
|
35
|
-
- `highlightedOnly` (optional): `true` to filter to highlighted skills
|
|
36
|
-
|
|
37
|
-
Response:
|
|
38
|
-
|
|
39
|
-
```json
|
|
40
|
-
{ "results": [{ "score": 0.123, "slug": "gifgrep", "displayName": "GifGrep", "summary": "…", "version": "1.2.3", "updatedAt": 1730000000000 }] }
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### `GET /api/v1/skills`
|
|
44
|
-
|
|
45
|
-
Query params:
|
|
46
|
-
|
|
47
|
-
- `limit` (optional): integer (1–200)
|
|
48
|
-
- `cursor` (optional): pagination cursor (only for `sort=updated`)
|
|
49
|
-
- `sort` (optional): `updated` (default), `downloads`, `stars` (alias: `rating`), `installsCurrent` (alias: `installs`), `installsAllTime`, `trending`
|
|
50
|
-
|
|
51
|
-
Notes:
|
|
52
|
-
|
|
53
|
-
- `trending` ranks by installs in the last 7 days (telemetry-based).
|
|
54
|
-
|
|
55
|
-
Response:
|
|
56
|
-
|
|
57
|
-
```json
|
|
58
|
-
{ "items": [{ "slug": "gifgrep", "displayName": "GifGrep", "summary": "…", "tags": { "latest": "1.2.3" }, "stats": {}, "createdAt": 0, "updatedAt": 0, "latestVersion": { "version": "1.2.3", "createdAt": 0, "changelog": "…" } }], "nextCursor": null }
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### `GET /api/v1/skills/{slug}`
|
|
62
|
-
|
|
63
|
-
Response:
|
|
64
|
-
|
|
65
|
-
```json
|
|
66
|
-
{ "skill": { "slug": "gifgrep", "displayName": "GifGrep", "summary": "…", "tags": { "latest": "1.2.3" }, "stats": {}, "createdAt": 0, "updatedAt": 0 }, "latestVersion": { "version": "1.2.3", "createdAt": 0, "changelog": "…" }, "owner": { "handle": "steipete", "displayName": "Peter", "image": null } }
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### `GET /api/v1/skills/{slug}/versions`
|
|
70
|
-
|
|
71
|
-
Query params:
|
|
72
|
-
|
|
73
|
-
- `limit` (optional): integer
|
|
74
|
-
- `cursor` (optional): pagination cursor
|
|
75
|
-
|
|
76
|
-
### `GET /api/v1/skills/{slug}/versions/{version}`
|
|
77
|
-
|
|
78
|
-
Returns version metadata + files list.
|
|
79
|
-
|
|
80
|
-
### `GET /api/v1/skills/{slug}/file`
|
|
81
|
-
|
|
82
|
-
Returns raw text content.
|
|
83
|
-
|
|
84
|
-
Query params:
|
|
85
|
-
|
|
86
|
-
- `path` (required)
|
|
87
|
-
- `version` (optional)
|
|
88
|
-
- `tag` (optional)
|
|
89
|
-
|
|
90
|
-
Notes:
|
|
91
|
-
|
|
92
|
-
- Defaults to latest version.
|
|
93
|
-
- File size limit: 200KB.
|
|
94
|
-
|
|
95
|
-
### `GET /api/v1/resolve`
|
|
96
|
-
|
|
97
|
-
Used by the CLI to map a local fingerprint to a known version.
|
|
98
|
-
|
|
99
|
-
Query params:
|
|
100
|
-
|
|
101
|
-
- `slug` (required)
|
|
102
|
-
- `hash` (required): 64-char hex sha256 of the bundle fingerprint
|
|
103
|
-
|
|
104
|
-
Response:
|
|
105
|
-
|
|
106
|
-
```json
|
|
107
|
-
{ "slug": "gifgrep", "match": { "version": "1.2.2" }, "latestVersion": { "version": "1.2.3" } }
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
### `GET /api/v1/download`
|
|
111
|
-
|
|
112
|
-
Downloads a zip of a skill version.
|
|
113
|
-
|
|
114
|
-
Query params:
|
|
115
|
-
|
|
116
|
-
- `slug` (required)
|
|
117
|
-
- `version` (optional): semver string
|
|
118
|
-
- `tag` (optional): tag name (e.g. `latest`)
|
|
119
|
-
|
|
120
|
-
Notes:
|
|
121
|
-
|
|
122
|
-
- If neither `version` nor `tag` is provided, the latest version is used.
|
|
123
|
-
- Soft-deleted versions return `410`.
|
|
124
|
-
|
|
125
|
-
## Auth endpoints (Bearer token)
|
|
126
|
-
|
|
127
|
-
All endpoints require:
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
Authorization: Bearer clh_...
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### `GET /api/v1/whoami`
|
|
134
|
-
|
|
135
|
-
Validates token and returns the user handle.
|
|
136
|
-
|
|
137
|
-
### `POST /api/v1/skills`
|
|
138
|
-
|
|
139
|
-
Publishes a new version.
|
|
140
|
-
|
|
141
|
-
- Preferred: `multipart/form-data` with `payload` JSON + `files[]` blobs.
|
|
142
|
-
- JSON body with `files` (storageId-based) is also accepted.
|
|
143
|
-
|
|
144
|
-
### `DELETE /api/v1/skills/{slug}` / `POST /api/v1/skills/{slug}/undelete`
|
|
145
|
-
|
|
146
|
-
Soft-delete / restore a skill (owner/admin only).
|
|
147
|
-
|
|
148
|
-
### `POST /api/v1/stars/{slug}` / `DELETE /api/v1/stars/{slug}`
|
|
149
|
-
|
|
150
|
-
Add/remove a star (highlights). Both endpoints are idempotent.
|
|
151
|
-
|
|
152
|
-
Responses:
|
|
153
|
-
|
|
154
|
-
```json
|
|
155
|
-
{ "ok": true, "starred": true, "alreadyStarred": false }
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
```json
|
|
159
|
-
{ "ok": true, "unstarred": true, "alreadyUnstarred": false }
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
## Legacy CLI endpoints (deprecated)
|
|
163
|
-
|
|
164
|
-
Still supported for older CLI versions:
|
|
165
|
-
|
|
166
|
-
- `GET /api/cli/whoami`
|
|
167
|
-
- `POST /api/cli/upload-url`
|
|
168
|
-
- `POST /api/cli/publish`
|
|
169
|
-
- `POST /api/cli/telemetry/sync`
|
|
170
|
-
- `POST /api/cli/skill/delete`
|
|
171
|
-
- `POST /api/cli/skill/undelete`
|
|
172
|
-
|
|
173
|
-
See `DEPRECATIONS.md` for removal plan.
|
|
174
|
-
|
|
175
|
-
## Registry discovery (`/.well-known/pilothub.json`)
|
|
176
|
-
|
|
177
|
-
The CLI can discover registry/auth settings from the site:
|
|
178
|
-
|
|
179
|
-
- `/.well-known/pilothub.json` (JSON)
|
|
180
|
-
|
|
181
|
-
Schema:
|
|
182
|
-
|
|
183
|
-
```json
|
|
184
|
-
{ "apiBase": "https://pilothub.com", "authBase": "https://pilothub.com", "minCliVersion": "0.0.5" }
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
If you self-host, serve this file (or set `PILOTHUB_REGISTRY` explicitly).
|
package/docs/manual-testing.md
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: 'Copy/paste CLI smoke checklist for local verification.'
|
|
3
|
-
read_when:
|
|
4
|
-
- Pre-merge validation
|
|
5
|
-
- Reproducing a reported CLI bug
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Manual testing (CLI)
|
|
9
|
-
|
|
10
|
-
## Setup
|
|
11
|
-
- Ensure logged in: `bun pilothub whoami` (or `bun pilothub login`).
|
|
12
|
-
- Optional: set env
|
|
13
|
-
- `PILOTHUB_SITE=https://pilothub.com`
|
|
14
|
-
- `PILOTHUB_REGISTRY=https://pilothub.com`
|
|
15
|
-
|
|
16
|
-
## Smoke
|
|
17
|
-
- `bun pilothub --help`
|
|
18
|
-
- `bun pilothub --cli-version`
|
|
19
|
-
- `bun pilothub whoami`
|
|
20
|
-
|
|
21
|
-
## Search
|
|
22
|
-
- `bun pilothub search gif --limit 5`
|
|
23
|
-
|
|
24
|
-
## Install / list / update
|
|
25
|
-
- `mkdir -p /tmp/pilothub-manual && cd /tmp/pilothub-manual`
|
|
26
|
-
- `bunx pilothub@beta install gifgrep --force`
|
|
27
|
-
- `bunx pilothub@beta list`
|
|
28
|
-
- `bunx pilothub@beta update gifgrep --force`
|
|
29
|
-
|
|
30
|
-
## Publish (changelog optional)
|
|
31
|
-
- `mkdir -p /tmp/pilothub-skill-demo/SKILL && cd /tmp/pilothub-skill-demo`
|
|
32
|
-
- Create files:
|
|
33
|
-
- `SKILL.md`
|
|
34
|
-
- `notes.md`
|
|
35
|
-
- Publish:
|
|
36
|
-
- `bun pilothub publish . --slug pilothub-manual-<ts> --name "Manual <ts>" --version 1.0.0 --tags latest`
|
|
37
|
-
- Publish update with empty changelog:
|
|
38
|
-
- `bun pilothub publish . --slug pilothub-manual-<ts> --name "Manual <ts>" --version 1.0.1 --tags latest`
|
|
39
|
-
|
|
40
|
-
## Delete / undelete (owner/admin)
|
|
41
|
-
- `bun pilothub delete pilothub-manual-<ts> --yes`
|
|
42
|
-
- Verify hidden:
|
|
43
|
-
- `curl -i "https://pilothub.com/api/v1/skills/pilothub-manual-<ts>"`
|
|
44
|
-
- Restore:
|
|
45
|
-
- `bun pilothub undelete pilothub-manual-<ts> --yes`
|
|
46
|
-
- Cleanup:
|
|
47
|
-
- `bun pilothub delete pilothub-manual-<ts> --yes`
|
|
48
|
-
|
|
49
|
-
## Sync
|
|
50
|
-
- `bun pilothub sync --dry-run --all`
|
|
51
|
-
|
|
52
|
-
## Playwright (menu smoke)
|
|
53
|
-
|
|
54
|
-
Run against prod:
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
PLAYWRIGHT_BASE_URL=https://pilothub.com bun run test:pw
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Run against a local preview server:
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
bun run test:e2e:local
|
|
64
|
-
```
|
package/docs/mintlify.md
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: 'Mintlify setup notes for publishing docs/.'
|
|
3
|
-
read_when:
|
|
4
|
-
- Setting up docs site
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Mintlify
|
|
8
|
-
|
|
9
|
-
Goal: publish `docs/` as a browsable docs site (nice UX for OSS users).
|
|
10
|
-
|
|
11
|
-
This repo does **not** include Mintlify config yet (`mint.json` missing).
|
|
12
|
-
|
|
13
|
-
## Minimal setup
|
|
14
|
-
|
|
15
|
-
1) Install Mintlify CLI (per Mintlify docs).
|
|
16
|
-
|
|
17
|
-
2) Add a `mint.json` at repo root that points to `docs/` pages.
|
|
18
|
-
|
|
19
|
-
Example (starter):
|
|
20
|
-
|
|
21
|
-
```json
|
|
22
|
-
{
|
|
23
|
-
"name": "PilotHub",
|
|
24
|
-
"logo": "public/logo.svg",
|
|
25
|
-
"navigation": [
|
|
26
|
-
{ "group": "Start", "pages": ["docs/README", "docs/quickstart"] },
|
|
27
|
-
{ "group": "Concepts", "pages": ["docs/architecture", "docs/skill-format", "docs/telemetry"] },
|
|
28
|
-
{ "group": "Reference", "pages": ["docs/cli", "docs/http-api", "docs/auth", "docs/deploy"] }
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Notes:
|
|
34
|
-
|
|
35
|
-
- Mintlify usually wants page paths without extension; keep files as `.md`.
|
|
36
|
-
- If you prefer Mintlify conventions, rename to `.mdx` later (optional).
|
|
37
|
-
|
|
38
|
-
## Recommended “docs UX” additions
|
|
39
|
-
|
|
40
|
-
- Add an “Overview” page (use `docs/README.md`).
|
|
41
|
-
- Keep “Quickstart” copy/paste friendly.
|
|
42
|
-
- Provide CLI + HTTP API reference pages (done here).
|
|
43
|
-
- Add a Troubleshooting page for common setup failures.
|
package/docs/quickstart.md
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: 'Local setup + CLI smoke: login, search, install, publish, sync.'
|
|
3
|
-
read_when:
|
|
4
|
-
- First run / local dev setup
|
|
5
|
-
- Verifying end-to-end flows
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Quickstart
|
|
9
|
-
|
|
10
|
-
## 0) Prereqs
|
|
11
|
-
|
|
12
|
-
- Bun
|
|
13
|
-
- Convex CLI (`bunx convex ...`)
|
|
14
|
-
- GitHub OAuth App (for login)
|
|
15
|
-
- OpenAI key (for embeddings/search)
|
|
16
|
-
|
|
17
|
-
## 1) Local dev (web + Convex)
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
bun install
|
|
21
|
-
cp .env.local.example .env.local
|
|
22
|
-
|
|
23
|
-
# terminal A
|
|
24
|
-
bun run dev
|
|
25
|
-
|
|
26
|
-
# terminal B
|
|
27
|
-
bunx convex dev
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## 2) Auth setup (GitHub OAuth + Convex Auth keys)
|
|
31
|
-
|
|
32
|
-
Fill in `.env.local`:
|
|
33
|
-
|
|
34
|
-
- `AUTH_GITHUB_ID`
|
|
35
|
-
- `AUTH_GITHUB_SECRET`
|
|
36
|
-
- `VITE_CONVEX_URL`
|
|
37
|
-
- `VITE_CONVEX_SITE_URL`
|
|
38
|
-
- `CONVEX_SITE_URL` (same as `VITE_CONVEX_SITE_URL`)
|
|
39
|
-
- `OPENAI_API_KEY`
|
|
40
|
-
|
|
41
|
-
Generate Convex Auth keys for your deployment:
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
bunx auth --deployment-name <deployment> --web-server-url http://localhost:3000
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Then paste the printed `JWT_PRIVATE_KEY` + `JWKS` into `.env.local` (and ensure the deployment got them too).
|
|
48
|
-
|
|
49
|
-
## 3) CLI: login + basic commands
|
|
50
|
-
|
|
51
|
-
From this repo:
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
bun pilothub --help
|
|
55
|
-
bun pilothub login
|
|
56
|
-
bun pilothub whoami
|
|
57
|
-
bun pilothub search gif --limit 5
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Install a skill into `./skills/<slug>` (if Pilotbot is configured, installs into that workspace instead):
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
bun pilothub install <slug>
|
|
64
|
-
bun pilothub list
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
You can also install into any folder:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
bun pilothub install <slug> --workdir /tmp/pilothub-demo --dir skills
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Update:
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
bun pilothub update --all
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## 4) Publish a skill
|
|
80
|
-
|
|
81
|
-
Create a folder containing `SKILL.md` (required) plus any supporting text files:
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
mkdir -p /tmp/pilothub-skill-demo && cd /tmp/pilothub-skill-demo
|
|
85
|
-
cat > SKILL.md <<'EOF'
|
|
86
|
-
---
|
|
87
|
-
name: Demo Skill
|
|
88
|
-
description: Demo skill for local testing
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
# Demo Skill
|
|
92
|
-
|
|
93
|
-
Hello.
|
|
94
|
-
EOF
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Publish:
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
bun pilothub publish . \
|
|
101
|
-
--slug pilothub-demo-$(date +%s) \
|
|
102
|
-
--name "Demo $(date +%s)" \
|
|
103
|
-
--version 1.0.0 \
|
|
104
|
-
--tags latest \
|
|
105
|
-
--changelog "Initial release"
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## 5) Sync local skills (auto-publish new/changed)
|
|
109
|
-
|
|
110
|
-
`sync` scans for local skill folders and publishes the ones that aren’t “synced” yet.
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
bun pilothub sync
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Dry run + non-interactive:
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
bun pilothub sync --all --dry-run --no-input
|
|
120
|
-
```
|