Commit Graph

80 Commits

Author SHA1 Message Date
Aaron Powell
a01f3d82c5 docs: replace prompts with skills across Learning Hub
Replace all prompt file references with skills guidance throughout the
Learning Hub. Skills are the preferred customization primitive because
they support agent discovery via extended frontmatter, can bundle
reference files and scripts, and are portable across coding agent
systems via the Agent Skills specification.

- Create what-are-agents-skills-instructions.md (replaces prompts article)
- Create creating-effective-skills.md (replaces prompts tutorial)
- Delete what-are-agents-prompts-instructions.md and creating-effective-prompts.md
- Update copilot-configuration-basics.md directory structure and examples
- Update defining-custom-instructions.md comparisons and cross-references
- Update glossary: deprecate Prompt entry, add Skill definition
- Update understanding-copilot-context.md and before-after examples
- Update learning-hub index.astro slugs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-26 12:18:23 +11:00
Aaron Powell
3f84820ce0 Merge branch 'staged' into learning-hub 2026-02-26 11:19:49 +11:00
Aaron Powell
1b93bf4256 fix: add missing meta tags for Twitter/X social card images
Add og:image:width, og:image:height, og:image:type, and
twitter:image:alt meta tags so Twitter/X can properly display
the social card image when links are shared.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-26 09:26:45 +11:00
Aaron Powell
f4c080b8bf feat(website): add Open Graph and Twitter Card meta tags for social sharing
- Add og:type, og:url, og:title, og:description, og:image, og:site_name meta tags
- Add twitter:card, twitter:title, twitter:description, twitter:image meta tags
- Add canonical URL link element
- Use social-image.png for social preview image
- Update document.title dynamically when modal opens/closes
- Resolve resource titles from JSON data files instead of raw filenames
- Handle skill/hook folder path mismatches for title lookup
- Change title separator from '-' to '|' for consistency

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-25 19:28:01 +11:00
Aaron Powell
0f42a72a20 Little context tweak 2026-02-25 16:34:41 +11:00
Aaron Powell
3ab1d9dece Update website/src/scripts/utils.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-25 16:32:20 +11:00
Aaron Powell
83aed9e974 Extract workflow triggers from 'on' frontmatter field, drop tags
Update parseWorkflowMetadata to extract triggers from the 'on'
property keys (e.g. schedule, issue_comment) instead of a separate
'triggers' field. Remove tags support from workflows since workflows
don't use tags.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-25 16:23:49 +11:00
Aaron Powell
6fc9e9375a Fix type-only imports for SearchItem across page scripts
Use 'type' modifier on SearchItem imports to satisfy
verbatimModuleSyntax. Without this, esbuild strips the interface
export but leaves the value import, causing a runtime error.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-25 16:13:04 +11:00
Aaron Powell
f5ac976836 Add agentic workflows page to website
Add a new /workflows/ page for browsing agentic workflow definitions
with search, trigger/tag filters, and sorting. Follows the same
patterns as the existing hooks page.

New files:
- website/src/pages/workflows.astro
- website/src/scripts/pages/workflows.ts

Updated files:
- BaseLayout.astro: add Workflows nav link
- index.astro: add Workflows card to homepage
- pages/index.ts: add workflows to counts
- utils.ts: add workflow type to icons, labels, and getResourceType

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-25 16:12:56 +11:00
Aaron Powell
a038e281db Add TypeScript config for Astro website
Add tsconfig.json extending astro/tsconfigs/base and env.d.ts with
Astro client type references to resolve import.meta.env type errors.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-25 15:54:15 +11:00
Aaron Powell
5bff7cadc0 Remove prompts from website
Remove the prompts page, navigation link, homepage card, and all
references to prompts across the website source code. The repo no
longer contains prompt files, so the website should not reference them.

Files removed:
- website/src/pages/prompts.astro
- website/src/scripts/pages/prompts.ts

Files updated:
- BaseLayout.astro: remove nav link and update description
- index.astro: remove prompts card and update text
- llms.txt.ts: remove prompts import and section
- plugins.astro: update description text
- utils.ts: remove prompt type from install config, icons, labels
- pages/index.ts: remove prompts from counts
- modal.ts: update JSDoc comment

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-25 15:54:09 +11:00
dependabot[bot]
69f9b89df5 chore(deps): bump devalue
Bumps the npm_and_yarn group with 1 update in the /website directory: [devalue](https://github.com/sveltejs/devalue).


Updates `devalue` from 5.6.2 to 5.6.3
- [Release notes](https://github.com/sveltejs/devalue/releases)
- [Changelog](https://github.com/sveltejs/devalue/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/devalue/compare/v5.6.2...v5.6.3)

---
updated-dependencies:
- dependency-name: devalue
  dependency-version: 5.6.3
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 04:48:24 +00:00
Luiz Bon
9f43980c68 Merge branch 'main' into feat/agent-manager 2026-02-18 20:28:34 +11:00
Luiz Bon
4025fda170 Add VS Code Agent Manager tool with features for managing Copilot agents 2026-02-18 20:25:44 +11:00
copilot-swe-agent[bot]
9d41a60236 Remove logo icon from website header
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-18 02:41:33 +00:00
Aaron Powell
ad85976dbb Remove text gradients from hero h1 and card-count
Replace gradient-clipped text with solid color (--color-primary) for
a simpler, cleaner design.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-17 10:58:35 +11:00
copilot-swe-agent[bot]
03aaae8dde Refactor plugin detection for better clarity
Split plugin detection into separate checks for plugin directories and plugin.json files to improve code readability and maintainability.

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-13 04:51:10 +00:00
copilot-swe-agent[bot]
65cd7bac3f Fix plugin detection in getResourceType for deep-linking
Update getResourceType to detect plugin directories (plugins/<id>) and plugin.json files instead of .collection.yml files. This fixes deep-linking via #file=plugins/<id> which was previously resolving to 'unknown' and not opening the plugin modal.

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-13 04:49:45 +00:00
Aaron Powell
7a003fc75a Deprecate Collections in favour of Plugins
Replace Collections with Plugins as first-class citizens in the repo.
With the Copilot CLI v0.409 release making plugins an on-by-default
marketplace, collections are redundant overhead.

## What changed

### Plugin Infrastructure
- Created eng/validate-plugins.mjs (replaces validate-collections.mjs)
- Created eng/create-plugin.mjs (replaces create-collection.mjs)
- Enhanced all 42 plugin.json files with tags, featured, display, and
  items metadata from their corresponding collection.yml files

### Build & Website
- Updated eng/update-readme.mjs to generate plugin docs
- Updated eng/generate-website-data.mjs to emit plugins.json with full
  items array for modal rendering
- Renamed website collections page to plugins (/plugins/)
- Fixed plugin modal to use <div> instead of <pre> for proper styling
- Updated README.md featured section from Collections to Plugins

### Documentation & CI
- Updated CONTRIBUTING.md, AGENTS.md, copilot-instructions.md, PR template
- Updated CI workflows to validate plugins instead of collections
- Replaced docs/README.collections.md with docs/README.plugins.md

### Cleanup
- Removed eng/validate-collections.mjs, eng/create-collection.mjs,
  eng/collection-to-plugin.mjs
- Removed entire collections/ directory (41 .collection.yml + .md files)
- Removed parseCollectionYaml from yaml-parser.mjs
- Removed COLLECTIONS_DIR from constants.mjs

Closes #711
2026-02-13 15:38:37 +11:00
Aaron Powell
2c5d251792 Fix modal close button on samples page
The samples page never called setupModal(), so the close button,
Escape key, and backdrop click handlers were never registered.
Add the missing setupModal() call matching all other pages.
2026-02-12 14:23:47 +11:00
Aaron Powell
57634b6231 feat: move samples into learning hub as Cookbook
- Rename samples page to /learning-hub/cookbook/
- Remove Samples from top navigation bar
- Add Cookbook to learning hub sidebar under Hands-on section
- Add Cookbook card to learning hub index page
- Add redirect from /samples/ to /learning-hub/cookbook/
- Add breadcrumb navigation back to Learning Hub
2026-02-11 14:02:14 +11:00
Aaron Powell
867650fb77 feat: add sticky sidebar navigation to learning hub articles 2026-02-11 13:54:36 +11:00
Aaron Powell
6bb024224b feat: add terminology glossary and split learning hub into Fundamentals and Reference sections 2026-02-11 12:12:41 +11:00
Aaron Powell
ba7f608a5f feat: add before/after customization examples article to learning hub 2026-02-11 12:10:17 +11:00
Aaron Powell
a124e133cb feat: migrate learning-hub articles into Astro website
- Add Astro Content Collection for learning-hub articles
- Move 5 fundamentals articles into website/src/content/learning-hub/
- Create ArticleLayout.astro for rendering markdown articles
- Create index page listing all articles in recommended reading order
- Create dynamic [slug].astro route for individual articles
- Add Learning Hub to main navigation and homepage cards
- Add article prose and index page CSS styles
- Update internal links to use website URLs
2026-02-10 17:30:30 +11:00
Aaron Powell
e80e20b5ec Address PR review comments for hooks implementation
- Fix getResourceType() to match relative paths like hooks/<name>/README.md
  and skills/<name>/SKILL.md using regex instead of string includes
- Extract hook events from hooks.json via parseHookMetadata() instead of
  non-existent frontmatter.event field in plugin README generation
- Update AGENTS.md to describe hooks as folder-based (README.md + hooks.json)
  instead of .hook.md files
- Update session-logger README to accurately reflect what scripts log
  (remove references to sessionId, duration, prompt content)
2026-02-10 14:37:45 +11:00
copilot-swe-agent[bot]
f62a764683 Fix path matching in getResourceType to support relative paths
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-10 03:31:09 +00:00
Aaron Powell
99a48a4020 Adding hooks to the website 2026-02-09 17:02:33 +11:00
Aaron Powell
9d20e2a80a Changing the link type 2026-02-04 11:56:13 +11:00
Aaron Powell
b1f627547e Fixing css font issue 2026-02-04 11:47:37 +11:00
Aaron Powell
05a461d68b Add Context7 library to tools.yml
- Add Context7 as a featured documentation and discovery tool
- Includes semantic search, validation, and auto-documentation features
- Links to Context7 platform and Awesome Copilot integration page
2026-02-04 11:46:02 +11:00
Aaron Powell
5e329d41c0 Merge pull request #649 from github/feature/last-updated-dates
feat(website): Add last updated dates for resources
2026-02-04 08:30:02 +11:00
Aaron Powell
1a9b280c80 Use absolute URLs in llms.txt 2026-02-03 14:54:42 +11:00
Aaron Powell
9a2dbf276b Move llms.txt generation to Astro endpoint
- Create website/src/pages/llms.txt.ts as an Astro static endpoint
- Remove generateLlmsTxt function from generate-website-data.mjs
- llms.txt is now generated at build time by Astro alongside other pages
2026-02-03 14:51:28 +11:00
Aaron Powell
46256b3a50 feat(website): Add last updated dates for agents, prompts, instructions, and skills
- Add git-dates.mjs utility to extract file modification dates from git history
- Include lastUpdated field in JSON data for all resource types
- Display relative time (e.g., '3 days ago') with full date on hover
- Add 'Recently Updated' sort option to agents, prompts, instructions, and skills pages
- Update deploy-website.yml to use fetch-depth: 0 for full git history

CI overhead: ~20-30s additional for full git checkout
2026-02-03 12:14:45 +11:00
Aaron Powell
fb4fb59625 fix: improve dropdown text visibility in dark/light modes
and ensure dropdown background and text colors properly use CSS variables
in both dark and light themes.
2026-02-03 11:39:28 +11:00
Aaron Powell
f4c2e0b0e0 Add commit SHA and build date to website footer
- Display short commit SHA with link to GitHub commit
- Show build date in YYYY-MM-DD format
- Use GITHUB_SHA env var in CI, fallback to git command locally
- Add subtle styling for build info text
2026-02-03 10:38:16 +11:00
Aaron Powell
a1da290d10 Refactor code for consistency and readability
- Standardized string quotes to double quotes across multiple files.
- Improved formatting and indentation for better readability.
- Added a function to format multiline text in tools rendering.
- Enhanced dropdown and action button handlers for better event management.
- Updated the theme application logic to initialize on page load.
- Refactored utility functions for consistency and clarity.
- Improved error handling and user feedback in download and share functionalities.
2026-02-02 16:42:22 +11:00
copilot-swe-agent[bot]
9e44173f94 Improve comment clarity for string escaping fix
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-02 05:07:06 +00:00
copilot-swe-agent[bot]
fb5f22a6b2 fix(website): properly escape backslashes and quotes in file paths
The previous implementation only escaped single quotes, which could allow
backslashes in file paths to break out of the JavaScript string context.
Now we escape backslashes first (\ -> \\), then single quotes (' -> \'),
preventing potential security issues.

Fixes CodeQL alert #26 for incomplete string escaping.

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-02 05:05:42 +00:00
Aaron Powell
611474f980 fix(website): resolve TypeScript errors in samples.ts
- Remove SearchableRecipe interface that conflicted with SearchableItem
- Use proper type casting for search results
- Fix FuzzySearch generic type usage
2026-02-02 15:42:34 +11:00
Aaron Powell
f8d9322f01 these are generated, shouldn't be committed 2026-02-02 15:36:32 +11:00
Aaron Powell
a64f4e78b9 Fixing some whitespace 2026-02-02 15:33:04 +11:00
Aaron Powell
3a7c8ccf1a feat(website): add Nerd Fonts for programming language icons
- Add Monaspace Argon NF font for dev icons
- Update cookbook.yml with unicode codepoints for language icons:
  - TypeScript: \uE628
  - Python: \uE73C
  - C#/.NET: \uF81A
  - Go: \uE626
- Style .lang-tab and .lang-indicator with Nerd Font family
2026-02-02 15:26:24 +11:00
Aaron Powell
9eab4ec6e7 fix(website): use Choices.js wrapper for samples tag filter
Use the same createChoices/getChoicesValues helpers as other pages
for consistent multi-select behavior.
2026-02-02 15:14:45 +11:00
Aaron Powell
b8d93a0344 feat(website): add samples/cookbook page with recipe browser
Integrates the cookbook/ folder into the website's Samples page:

Data Structure:
- Add cookbook/cookbook.yml manifest defining cookbooks and recipes
- Add .schemas/cookbook.schema.json for validation
- Add COOKBOOK_DIR constant to eng/constants.mjs

Build Integration:
- Add generateSamplesData() to generate samples.json from cookbook.yml
- Include recipe variants with file paths for each language
- Add samples count to manifest.json

Website UI:
- Create samples.ts with FuzzySearch, language/tag filtering
- Replace placeholder samples.astro with functional recipe browser
- Recipe cards with language indicators and action buttons
- Language tabs for switching between implementations
- View Recipe/View Example buttons open modal
- GitHub link for each recipe

Features:
- Search recipes by name/description
- Filter by programming language (Node.js, Python, .NET, Go)
- Filter by tags (multi-select with Choices.js)
- 5 recipes across 4 languages = 20 recipe variants
2026-02-02 15:11:12 +11:00
Aaron Powell
2f9c59444b fix(website): update button styles and fix dropdown z-index
- Change primary buttons from gradient to solid Copilot Purple (#8534F3)
- Add position:relative and z-index:10 to .filters-bar to fix
  Choices.js dropdown appearing behind resource list items
2026-02-02 13:46:39 +11:00
Aaron Powell
94a395dbe0 feat(website): add comprehensive accessibility improvements
Phase 1 - Screen Reader Critical:
- Add aria-label to main navigation
- Add accessible names to icon-only buttons (GitHub, theme toggle, close)
- Add aria-hidden to decorative SVGs and emoji icons
- Add role=dialog, aria-modal, aria-labelledby to modal
- Add skip link with visible focus state

Phase 2 - Keyboard Navigation:
- Implement focus trap in modal (Tab/Shift+Tab cycles)
- Return focus to trigger element on modal close
- Replace outline:none with visible focus rings
- Add keyboard navigation to install dropdown (arrows, escape)
- Add aria-expanded to dropdown toggles

Phase 3 - Dynamic Content:
- Add aria-live=polite to results counts and loading states
- Add role=listbox to search results
- Add role=list to resource lists
- Add role=menu/menuitem to dropdown menus

Phase 4 - Forms & Labels:
- Add .sr-only utility class for screen reader text
- Add visually hidden labels to all search inputs
- Add aria-label to filter dropdowns

Files modified:
- BaseLayout.astro, Modal.astro (ARIA attributes)
- modal.ts (focus trap, keyboard navigation)
- global.css (sr-only, skip-link, focus styles)
- All page files (labels, live regions, roles)
2026-02-02 11:52:31 +11:00
Aaron Powell
f99c99a5d4 fixing overflow 2026-02-02 10:36:16 +11:00
Aaron Powell
4318aa547f Remove unused src/styles/global.css
The site uses public/styles/global.css via direct link in BaseLayout.
The src/styles version was outdated and never imported.
2026-02-02 10:34:36 +11:00