Skip to content
Open
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
106 changes: 106 additions & 0 deletions .github/workflows/git-ape-docs-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: "Git-Ape: Docs Check"

on:
pull_request:
paths:
- '.github/agents/**'
- '.github/skills/**'
- '.github/workflows/git-ape-plan.yml'
- '.github/workflows/git-ape-deploy.yml'
- '.github/workflows/git-ape-destroy.yml'
- '.github/workflows/git-ape-verify.yml'
Comment on lines +8 to +11
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This docs-check workflow filters on .github/workflows/git-ape-.yml, but the repo currently contains git-ape-.exampleyml (and the docs generator appears to read from those). As written, changes to the example workflows won’t trigger the stale-docs check. Update the paths filter to match the actual workflow filenames (or use a broader glob like .github/workflows/*) so the check runs when workflow sources change.

Suggested change
- '.github/workflows/git-ape-plan.yml'
- '.github/workflows/git-ape-deploy.yml'
- '.github/workflows/git-ape-destroy.yml'
- '.github/workflows/git-ape-verify.yml'
- '.github/workflows/*'

Copilot uses AI. Check for mistakes.
- '.github/plugin/**'
- 'plugin.json'

permissions:
contents: read
pull-requests: write

jobs:
check-docs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: website/package-lock.json

- name: Install dependencies
working-directory: website
run: npm ci

- name: Generate docs from source
run: node scripts/generate-docs.js

- name: Check for stale docs
id: diff
run: |
if git diff --quiet website/docs/; then
echo "stale=false" >> "$GITHUB_OUTPUT"
echo "✅ Generated docs are up to date"
else
echo "stale=true" >> "$GITHUB_OUTPUT"
echo "⚠️ Generated docs are stale"
echo ""
echo "Changed files:"
git diff --name-only website/docs/
fi

- name: Comment on PR if stale
if: steps.diff.outputs.stale == 'true'
uses: actions/github-script@v7
with:
script: |
const { execSync } = require('child_process');
const changedFiles = execSync('git diff --name-only website/docs/')
.toString()
.trim()
.split('\n')
.map(f => `- \`${f}\``)
.join('\n');

const body = `## ⚠️ Documentation Staleness Warning

Source files (agents, skills, workflows, or config) changed in this PR, but the generated documentation is out of date.

**Changed docs that need regeneration:**
${changedFiles}

**To fix:** Run the following command and commit the results:
\`\`\`bash
node scripts/generate-docs.js
\`\`\`

> This is an advisory check — it does not block the PR.
`.replace(/^ /gm, '');

// Find existing comment to update
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});

const marker = '## ⚠️ Documentation Staleness Warning';
const existing = comments.find(c => c.body?.includes(marker));

if (existing) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id,
body,
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body,
});
}
64 changes: 64 additions & 0 deletions .github/workflows/git-ape-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: "Git-Ape: Docs Deploy"

on:
push:
branches: [main]
paths:
- '.github/agents/**'
- '.github/skills/**'
- '.github/workflows/**'
- '.github/plugin/**'
- 'docs/**'
- 'plugin.json'
- 'website/**'
- 'scripts/generate-docs.js'

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

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

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: website/package-lock.json

- name: Install dependencies
working-directory: website
run: npm ci

- name: Generate docs from source
run: node scripts/generate-docs.js

- name: Build Docusaurus
working-directory: website
run: npm run build

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: website/build

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@
.azure/*
!.azure/deployments/


# Docusaurus
website/node_modules/
website/build/
website/.docusaurus/
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
> EXPERIMENTAL PROJECT: Git-Ape is in active development and is not production-ready.
> Use it for local development, demos, sandbox subscriptions, and learning only.


**📖 Documentation:** [azure.github.io/git-ape](https://azure.github.io/git-ape/)

Git-Ape is a **platform engineering framework** built on GitHub Copilot. It provides a structured, multi-agent system for planning, validating, and deploying Azure infrastructure — with security gates, cost analysis, and CI/CD pipeline integration built in.

## What It Is
Expand Down
Loading