Skip to content
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
54 changes: 54 additions & 0 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Deploy IDP site to GitHub Pages

# Re-runs on any change to the site itself OR to the marketplace data the
# site reads (marketplace.json, plugins, top-level apm.yml). That is what
# makes the catalog automatically reflect repo changes.
on:
push:
branches: [main]
paths:
- 'docs/**'
- '.claude-plugin/**'
- 'plugins/**'
- 'apm.yml'
- '.github/workflows/deploy-pages.yml'
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: docs
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: docs/package-lock.json
- run: npm ci
- run: npm run build
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: docs/dist

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
4 changes: 4 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules/
dist/
.astro/
.DS_Store
50 changes: 50 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Zava IDP — docs site

Astro 6 + Starlight site deployed to GitHub Pages at
<https://devexpgbb.github.io/zava-agent-config/>.

The catalog is **derived at build time** from the repo itself:

| Source of truth | Drives |
| ----------------------------------------------------- | ------------------------------- |
| `../.claude-plugin/marketplace.json` | Plugin list, order, source path |
| `../apm.yml` `version` | Site-wide pinned version + tag |
| `../plugins/<id>/apm.yml` | Per-plugin description, version |
| `../plugins/<id>/.claude-plugin/plugin.json` keywords | Tier (foundation / phase / accelerator) and SDLC phase |
| `../plugins/<id>/.apm/{agents,skills,instructions,commands,hooks}` | "What's inside" primitive list |

Editorial overrides ("Pin if you…", "Pairs with") live in
`src/data/plugins.ts → PLUGIN_NOTES`. Everything else updates automatically
when the marketplace or vendored plugins change — the deploy workflow
re-runs on any change under `plugins/`, `.claude-plugin/`, `apm.yml`, or
`docs/`.

## Local dev

```bash
cd docs
npm install
npm run dev # http://localhost:4321/zava-agent-config/
npm run build # ./dist
```

## Adding a new plugin

1. Add the plugin under `../plugins/<name>/` with the standard layout.
2. Append it to `../.claude-plugin/marketplace.json`.
3. Tag its `plugin.json` `keywords` with one of:
- `cross-cutting` → Foundation tier
- `accelerator` → Accelerator tier
- `ideate` / `plan` / `code` / `build` / `test` / `review` / `release` / `operate` → Phase kit (phase derived from the keyword)
4. Add a sidebar entry in `astro.config.mjs` (`Plugins` group).
5. Optional: add a `PLUGIN_NOTES` entry in `src/data/plugins.ts` to override
"Pin if you…" / "Pairs with".

The CI workflow rebuilds and redeploys automatically on push to `main`.

## Global policy

The site links every page back to `DevExpGbb/.github/apm-policy.yml` and the
[APM CI policy setup guide](https://microsoft.github.io/apm/guides/ci-policy-setup/)
via the `PolicyBanner` component. Update those URLs in
`src/data/plugins.ts` if the policy file moves.
85 changes: 85 additions & 0 deletions docs/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
// @ts-check
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';

const REPO = 'DevExpGbb/zava-agent-config';

export default defineConfig({
site: 'https://devexpgbb.github.io',
base: '/zava-agent-config',
trailingSlash: 'always',
integrations: [
starlight({
title: 'Zava IDP',
description:
'Internal Developer Portal for the Zava Agentic SDLC — the marketplace of skills, personas and instructions every Zava service repo pins via apm.yml.',
logo: { src: './src/assets/zava.svg' },
favicon: '/favicon.svg',
social: [
{ icon: 'github', label: 'GitHub', href: `https://github.com/${REPO}` },
],
customCss: ['./src/styles/custom.css'],
editLink: {
baseUrl: `https://github.com/${REPO}/edit/main/docs/`,
},
lastUpdated: true,
sidebar: [
{
label: 'Start here',
items: [
{ label: 'Welcome', link: '/' },
{ label: 'Quick start', link: '/quick-start/' },
{ label: 'Install patterns', link: '/install/' },
],
},
{
label: 'Catalog',
items: [{ label: 'Browse all plugins', link: '/catalog/' }],
},
{
label: 'SDLC phases',
collapsed: false,
items: [
{ label: 'Ideate', link: '/sdlc/ideate/' },
{ label: 'Plan', link: '/sdlc/plan/' },
{ label: 'Code', link: '/sdlc/code/' },
{ label: 'Build', link: '/sdlc/build/' },
{ label: 'Test', link: '/sdlc/test/' },
{ label: 'Review', link: '/sdlc/review/' },
{ label: 'Release',link: '/sdlc/release/' },
{ label: 'Operate',link: '/sdlc/operate/' },
],
},
{
label: 'Tiers',
collapsed: true,
items: [
{ label: 'Foundation', link: '/tiers/foundation/' },
{ label: 'Phase kits', link: '/tiers/phase-kits/' },
{ label: 'Accelerators', link: '/tiers/accelerators/' },
],
},
{
label: 'Plugins',
collapsed: true,
items: [
{ label: 'secure-baseline', link: '/catalog/secure-baseline/' },
{ label: 'ideate-kit', link: '/catalog/ideate-kit/' },
{ label: 'code-kit', link: '/catalog/code-kit/' },
{ label: 'review-kit', link: '/catalog/review-kit/' },
{ label: 'release-kit', link: '/catalog/release-kit/' },
{ label: 'operate-kit', link: '/catalog/operate-kit/' },
{ label: 'modernize-kit', link: '/catalog/modernize-kit/' },
],
},
{
label: 'Governance',
items: [
{ label: 'Consumption patterns', link: '/governance/consumption-patterns/' },
{ label: 'Policy & CI', link: '/governance/policy/' },
],
},
],
}),
],
});
Loading
Loading