Merge branch 'staged' into learning-hub

This commit is contained in:
Aaron Powell
2026-02-26 11:19:49 +11:00
654 changed files with 34958 additions and 7329 deletions

View File

@@ -0,0 +1,54 @@
---
import BaseLayout from '../layouts/BaseLayout.astro';
import Modal from '../components/Modal.astro';
---
<BaseLayout title="Hooks" description="Automated workflows triggered by Copilot coding agent events" activeNav="hooks">
<main id="main-content">
<div class="page-header">
<div class="container">
<h1>🪝 Hooks</h1>
<p>Automated workflows triggered by Copilot coding agent events</p>
</div>
</div>
<div class="page-content">
<div class="container">
<div class="search-bar">
<label for="search-input" class="sr-only">Search hooks</label>
<input type="text" id="search-input" placeholder="Search hooks..." autocomplete="off">
</div>
<div class="filters-bar" id="filters-bar">
<div class="filter-group">
<label for="filter-hook">Hook Event:</label>
<select id="filter-hook" multiple aria-label="Filter by hook event"></select>
</div>
<div class="filter-group">
<label for="filter-tag">Tag:</label>
<select id="filter-tag" multiple aria-label="Filter by tag"></select>
</div>
<div class="filter-group">
<label for="sort-select">Sort:</label>
<select id="sort-select" aria-label="Sort by">
<option value="title">Name (A-Z)</option>
<option value="lastUpdated">Recently Updated</option>
</select>
</div>
<button id="clear-filters" class="btn btn-secondary btn-small">Clear Filters</button>
</div>
<div class="results-count" id="results-count" aria-live="polite"></div>
<div class="resource-list" id="resource-list" role="list">
<div class="loading" aria-live="polite">Loading hooks...</div>
</div>
</div>
</div>
</main>
<Modal />
<script>
import '../scripts/pages/hooks';
</script>
</BaseLayout>

View File

@@ -11,7 +11,7 @@ const base = import.meta.env.BASE_URL;
<section class="hero" aria-labelledby="hero-heading">
<div class="container">
<h1 id="hero-heading">Awesome GitHub Copilot</h1>
<p class="hero-subtitle">Community-contributed instructions, prompts, agents, and skills to enhance your GitHub Copilot experience</p>
<p class="hero-subtitle">Community-contributed agents, instructions, and skills to enhance your GitHub Copilot experience</p>
<div class="hero-search">
<label for="global-search" class="sr-only">Search all resources</label>
<input type="text" id="global-search" placeholder="Search all resources..." autocomplete="off" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="search-results">
@@ -33,14 +33,6 @@ const base = import.meta.env.BASE_URL;
</div>
<div class="card-count" data-count="agents" aria-label="Agent count">-</div>
</a>
<a href={`${base}prompts/`} class="card card-with-count" id="card-prompts">
<div class="card-icon" aria-hidden="true">🎯</div>
<div class="card-content">
<h3>Prompts</h3>
<p>Ready-to-use prompt templates for development tasks</p>
</div>
<div class="card-count" data-count="prompts" aria-label="Prompt count">-</div>
</a>
<a href={`${base}instructions/`} class="card card-with-count" id="card-instructions">
<div class="card-icon" aria-hidden="true">📋</div>
<div class="card-content">
@@ -57,13 +49,29 @@ const base = import.meta.env.BASE_URL;
</div>
<div class="card-count" data-count="skills" aria-label="Skill count">-</div>
</a>
<a href={`${base}collections/`} class="card card-with-count" id="card-collections">
<div class="card-icon" aria-hidden="true">📦</div>
<a href={`${base}hooks/`} class="card card-with-count" id="card-hooks">
<div class="card-icon" aria-hidden="true">🪝</div>
<div class="card-content">
<h3>Collections</h3>
<p>Curated collections organized by themes</p>
<h3>Hooks</h3>
<p>Automated workflows triggered by agent events</p>
</div>
<div class="card-count" data-count="collections" aria-label="Collection count">-</div>
<div class="card-count" data-count="hooks" aria-label="Hook count">-</div>
</a>
<a href={`${base}workflows/`} class="card card-with-count" id="card-workflows">
<div class="card-icon" aria-hidden="true">⚡</div>
<div class="card-content">
<h3>Workflows</h3>
<p>AI-powered automations for GitHub Actions</p>
</div>
<div class="card-count" data-count="workflows" aria-label="Workflow count">-</div>
</a>
<a href={`${base}plugins/`} class="card card-with-count" id="card-plugins">
<div class="card-icon" aria-hidden="true">🔌</div>
<div class="card-content">
<h3>Plugins</h3>
<p>Curated plugins organized by themes</p>
</div>
<div class="card-count" data-count="plugins" aria-label="Plugin count">-</div>
</a>
<a href={`${base}tools/`} class="card card-with-count" id="card-tools">
<div class="card-icon" aria-hidden="true">🔧</div>
@@ -84,11 +92,11 @@ const base = import.meta.env.BASE_URL;
</div>
</section>
<!-- Featured Collections -->
<!-- Featured Plugins -->
<section class="featured" aria-labelledby="featured-heading">
<div class="container">
<h2 id="featured-heading">Featured Collections</h2>
<div id="featured-collections" class="cards-grid" aria-live="polite">
<h2 id="featured-heading">Featured Plugins</h2>
<div id="featured-plugins" class="cards-grid" aria-live="polite">
<!-- Populated by JS -->
</div>
</div>
@@ -102,7 +110,7 @@ const base = import.meta.env.BASE_URL;
<div class="step">
<div class="step-number" aria-hidden="true">1</div>
<h3>Browse</h3>
<p>Explore agents, prompts, instructions, and skills</p>
<p>Explore agents, instructions, skills, and plugins</p>
</div>
<div class="step">
<div class="step-number" aria-hidden="true">2</div>

View File

@@ -1,6 +1,5 @@
import type { APIRoute } from "astro";
import agentsData from "../../public/data/agents.json";
import promptsData from "../../public/data/prompts.json";
import instructionsData from "../../public/data/instructions.json";
import skillsData from "../../public/data/skills.json";
@@ -9,7 +8,6 @@ const GITHUB_RAW_BASE = "https://raw.githubusercontent.com/github/awesome-copilo
export const GET: APIRoute = () => {
const agents = agentsData.items;
const prompts = promptsData.items;
const instructions = instructionsData.items;
const skills = skillsData.items;
@@ -22,7 +20,7 @@ export const GET: APIRoute = () => {
// Summary blockquote (optional but recommended)
content +=
"> A community-driven collection of custom agents, prompts, instructions, and skills to enhance GitHub Copilot experiences across various domains, languages, and use cases.\n\n";
"> A community-driven collection of custom agents, instructions, and skills to enhance GitHub Copilot experiences across various domains, languages, and use cases.\n\n";
// Add overview section
content += "## Overview\n\n";
@@ -30,8 +28,6 @@ export const GET: APIRoute = () => {
"This repository provides resources to customize and enhance GitHub Copilot:\n\n";
content +=
"- **Agents**: Specialized GitHub Copilot agents that integrate with MCP servers\n";
content +=
"- **Prompts**: Task-specific prompts for code generation and problem-solving\n";
content +=
"- **Instructions**: Coding standards and best practices applied to specific file patterns\n";
content +=
@@ -47,16 +43,6 @@ export const GET: APIRoute = () => {
}
content += "\n";
// Process Prompts
content += "## Prompts\n\n";
for (const prompt of prompts) {
const description = (prompt.description || "No description available")
.replace(/\s+/g, " ")
.trim();
content += `- [${prompt.title}](${url(prompt.path)}): ${description}\n`;
}
content += "\n";
// Process Instructions
content += "## Instructions\n\n";
for (const instruction of instructions) {

View File

@@ -3,22 +3,22 @@ import BaseLayout from '../layouts/BaseLayout.astro';
import Modal from '../components/Modal.astro';
---
<BaseLayout title="Collections" description="Curated collections of prompts, instructions, and agents for specific workflows" activeNav="collections">
<BaseLayout title="Plugins" description="Curated plugins of agents, hooks, and skills for specific workflows" activeNav="plugins">
<main id="main-content">
<div class="page-header">
<div class="container">
<h1>📦 Collections</h1>
<p>Curated collections of prompts, instructions, and agents for specific workflows</p>
<h1>🔌 Plugins</h1>
<p>Curated plugins of agents, hooks, and skills for specific workflows</p>
</div>
</div>
<div class="page-content">
<div class="container">
<div class="search-bar">
<label for="search-input" class="sr-only">Search collections</label>
<input type="text" id="search-input" placeholder="Search collections..." autocomplete="off">
<label for="search-input" class="sr-only">Search plugins</label>
<input type="text" id="search-input" placeholder="Search plugins..." autocomplete="off">
</div>
<div class="filters-bar" id="filters-bar">
<div class="filter-group">
<label for="filter-tag">Tag:</label>
@@ -32,10 +32,10 @@ import Modal from '../components/Modal.astro';
</div>
<button id="clear-filters" class="btn btn-secondary btn-small">Clear Filters</button>
</div>
<div class="results-count" id="results-count" aria-live="polite"></div>
<div class="resource-list" id="resource-list" role="list">
<div class="loading" aria-live="polite">Loading collections...</div>
<div class="loading" aria-live="polite">Loading plugins...</div>
</div>
</div>
</div>
@@ -44,6 +44,6 @@ import Modal from '../components/Modal.astro';
<Modal />
<script>
import '../scripts/pages/collections';
import '../scripts/pages/plugins';
</script>
</BaseLayout>

View File

@@ -3,26 +3,26 @@ import BaseLayout from '../layouts/BaseLayout.astro';
import Modal from '../components/Modal.astro';
---
<BaseLayout title="Prompts" description="Ready-to-use prompt templates for development tasks with GitHub Copilot" activeNav="prompts">
<BaseLayout title="Workflows" description="AI-powered repository automations that run coding agents in GitHub Actions" activeNav="workflows">
<main id="main-content">
<div class="page-header">
<div class="container">
<h1>🎯 Prompts</h1>
<p>Ready-to-use prompt templates for development tasks with GitHub Copilot</p>
<h1>⚡ Agentic Workflows</h1>
<p>AI-powered repository automations that run coding agents in GitHub Actions</p>
</div>
</div>
<div class="page-content">
<div class="container">
<div class="search-bar">
<label for="search-input" class="sr-only">Search prompts</label>
<input type="text" id="search-input" placeholder="Search prompts..." autocomplete="off">
<label for="search-input" class="sr-only">Search workflows</label>
<input type="text" id="search-input" placeholder="Search workflows..." autocomplete="off">
</div>
<div class="filters-bar" id="filters-bar">
<div class="filter-group">
<label for="filter-tool">Tool:</label>
<select id="filter-tool" multiple aria-label="Filter by tool"></select>
<label for="filter-trigger">Trigger:</label>
<select id="filter-trigger" multiple aria-label="Filter by trigger"></select>
</div>
<div class="filter-group">
<label for="sort-select">Sort:</label>
@@ -36,7 +36,7 @@ import Modal from '../components/Modal.astro';
<div class="results-count" id="results-count" aria-live="polite"></div>
<div class="resource-list" id="resource-list" role="list">
<div class="loading" aria-live="polite">Loading prompts...</div>
<div class="loading" aria-live="polite">Loading workflows...</div>
</div>
</div>
</div>
@@ -45,6 +45,6 @@ import Modal from '../components/Modal.astro';
<Modal />
<script>
import '../scripts/pages/prompts';
import '../scripts/pages/workflows';
</script>
</BaseLayout>