diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d1a878f..2d8ddec 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,7 +10,7 @@ on: - ".releaserc.json" - "package.json" - "pnpm-lock.yaml" - - "scripts/publish-github-package.mjs" + - "scripts/publish-github-package.ts" permissions: contents: write @@ -35,7 +35,23 @@ jobs: registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile - run: pnpm check - - run: pnpm release + - name: Check npm publishing credentials + id: npm-auth + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + if [[ -n "$NPM_TOKEN" ]]; then + echo "available=true" >> "$GITHUB_OUTPUT" + else + echo "::warning::NPM_TOKEN is not configured; semantic-release will be skipped." + echo "available=false" >> "$GITHUB_OUTPUT" + fi + - name: Run semantic-release + if: steps.npm-auth.outputs.available == 'true' + run: pnpm release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Skip semantic-release without npm credentials + if: steps.npm-auth.outputs.available != 'true' + run: echo "Release skipped because NPM_TOKEN is not configured." diff --git a/.releaserc.json b/.releaserc.json index 549ce84..711082b 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -16,6 +16,7 @@ [ "@semantic-release/github", { + "labels": [], "assets": [{ "path": "release/*.tgz", "label": "npm package" }], "releaseBodyTemplate": "<%= nextRelease.notes %>\n\nPackage: [@jstn-sdk/agents](https://www.npmjs.com/package/@jstn-sdk/agents)\n\nRepository: https://github.com/JustineDevs/agent-compat" } diff --git a/README.md b/README.md index 6dc5589..7dabb7b 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ [![npm version](https://img.shields.io/npm/v/@jstn-sdk/agents)](https://www.npmjs.com/package/@jstn-sdk/agents) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +agent-compat - The compatibility layer for AI agent environments. | Product Hunt + > [!NOTE] diff --git a/apps/docs/app/docs/[[...slug]]/page.tsx b/apps/docs/app/docs/[[...slug]]/page.tsx index 1cbc6ee..c54410f 100644 --- a/apps/docs/app/docs/[[...slug]]/page.tsx +++ b/apps/docs/app/docs/[[...slug]]/page.tsx @@ -35,5 +35,23 @@ export async function generateMetadata(props: PageProps) { const params = await props.params; const page = source.getPage(params.slug); if (!page) return {}; - return { title: page.data.title, description: page.data.description }; + return { + title: page.data.title, + description: page.data.description, + alternates: { canonical: page.url }, + openGraph: { + type: "article", + url: page.url, + title: page.data.title, + description: page.data.description, + images: [ + { + url: "/assets/banner.png", + width: 2508, + height: 627, + alt: `${page.data.title} | Agent Compat`, + }, + ], + }, + }; } diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx index 81f4ecd..722cc6e 100644 --- a/apps/docs/app/layout.tsx +++ b/apps/docs/app/layout.tsx @@ -11,6 +11,46 @@ export const metadata: Metadata = { }, description: "Cross-agent environment compatibility SDK: detect, compile, validate.", + applicationName: "Agent Compat", + keywords: [ + "agent compatibility", + "AI agent SDK", + "AGENTS.md", + "agent skills", + "TypeScript", + ], + authors: [{ name: "Justine Devs", url: "https://github.com/JustineDevs" }], + creator: "Justine Devs", + publisher: "Justine Devs", + alternates: { canonical: "/docs" }, + openGraph: { + type: "website", + siteName: "Agent Compat", + title: "Agent Compat | Cross-agent compatibility SDK", + description: + "Detect, compile, and validate project integrations across AI coding environments.", + url: "/docs", + images: [ + { + url: "/assets/banner.png", + width: 2508, + height: 627, + alt: "Agent Compat cross-agent environment compatibility SDK", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: "Agent Compat | Cross-agent compatibility SDK", + description: + "Detect, compile, and validate project integrations across AI coding environments.", + images: ["/assets/banner.png"], + }, + robots: { + index: true, + follow: true, + googleBot: { index: true, follow: true, "max-image-preview": "large" }, + }, }; export default function RootLayout({ @@ -21,6 +61,38 @@ export default function RootLayout({ return ( +