Add Portfolio Gallery Directive Support to AstroMarkdown
Summary
:::) while maintaining backward compatibility with the deprecated YAML code block syntax (```).Why Care
Implementation
Changes Made
- File Modified:
site/src/components/markdown/AstroMarkdown.astro- Added import for
PortfolioGallerycomponent from@components/tool-components/PortfolioGallery.astro - Added import for
resolvePortfolioIdfrom@utils/toolUtils - Added: Tooling gallery directive support (
:::tooling-gallery,:::toolingGallery) - Added: Image gallery directive support (
:::image-gallery,:::imageGallery) - Enhanced: Portfolio gallery directive support (
:::portfolio-gallery,:::portfolioGallery) - Implemented async loading logic in top-level script section for all gallery types
- Added directive handlers for all gallery types with proper async/await architecture
- Added: Deprecation warnings for YAML code block syntax
- Fixed: Async/await usage by following the established pattern for all directives
- Added configuration support for
small,expanded,fullWidthattributes - Implemented comprehensive error handling for missing references
- File Modified:
site/src/utils/toolUtils.ts- Added
resolvePortfolioIdfunction (lines ~206-262) based onresolveToolIdpattern - Implements 6-step resolution: exact match, normalized match, filename match, slugified match, partial path matching, routeManager resolution
- Enables flexible portfolio reference formats in markdown directives
- Fixed space/dash conversion for portfolio names like "Maven Clinic" ↔ "maven-clinic"
- File Modified:
site/src/components/markdown/ToolingGallery.astro- Added
errorsprop to display missing tool warnings - Added error display section with consistent styling
- Enhanced error handling to match PortfolioGallery functionality
- File Modified:
site/src/components/tool-components/ToolCard.astro&site/src/components/tool-components/PortfolioCard.astro- Removed favicon display from both components for cleaner layout
- Simplified header structure to focus on main content
- File Created:
site/GALLERY_DIRECTIVE_MIGRATION.md- Comprehensive migration guide for all gallery types
- Examples of old vs new syntax
- Regex patterns for automated migration
- Benefits and timeline for directive adoption
Technical Details
Async/Await Architecture
await is allowed:// site/src/components/markdown/AstroMarkdown.astro
// Gallery Logic - handle async work upfront for all gallery types
const isToolingGalleryDirective = (
node.type === "containerDirective" &&
(node.name === 'tooling-gallery' || node.name === 'toolingGallery')
);
const isImageGalleryDirective = (
node.type === "containerDirective" &&
(node.name === 'image-gallery' || node.name === 'imageGallery')
);
const isPortfolioGallery = (
node.type === "containerDirective" &&
(node.name === 'portfolio-gallery' || node.name === 'portfolioGallery')
);
// Pre-computed variables for all gallery types
let toolingGalleryDirectiveTools = null;
let imageGalleryDirectiveCode = '';
let portfolioGalleryPortfolios = null;
if (isToolingGalleryDirective) {
// Async tooling collection loading happens here
const allTools = await getCollection('tooling');
// Process and store results in variables
}
if (isImageGalleryDirective) {
// Extract content from directive children
imageGalleryDirectiveCode = extractedContent;
}
if (isPortfolioGallery) {
// Async portfolio collection loading happens here
const allPortfolios = await getCollection('client-portfolios');
// Process and store results in variables
} Directive Handler Implementation
// site/src/components/markdown/AstroMarkdown.astro
// All directive handlers use pre-computed data
if (directiveName === 'tooling-gallery') {
return <ToolingGallery tools={toolingGalleryDirectiveTools} />
}
if (directiveName === 'image-gallery') {
return <ImageGallery code={imageGalleryDirectiveCode} />
}
if (directiveName === 'portfolio-gallery') {
return <PortfolioGallery portfolios={portfolioGalleryPortfolios} />
} Portfolio Data Processing
- Extracts portfolio paths from markdown list items with backlinks
- Loads
client-portfolioscollection usinggetCollection() - Uses
resolvePortfolioIdfor intelligent portfolio matching with multiple fallback strategies:- Exact Match: Direct ID matching
- Normalized Match: Slugified comparison
- Filename Match: Case-insensitive filename matching
- RouteManager Resolution: Uses routing system for complex path resolution
- Processes portfolio frontmatter data including
url,tags,portfoliosarrays - Generates proper
idandfilenameproperties for component consumption
Configuration Options
small: Renders compact portfolio cardsexpanded: Controls initial gallery expansion state (default: true)fullWidth/full: Makes gallery take full container width
Error Handling
- Displays warning for missing portfolio references
- Provides debug information in development
- Gracefully handles empty directive content
Integration Points
Component Dependencies
- PortfolioGallery: Main gallery component for rendering portfolio cards
- getCollection: Astro content collection API for loading portfolio data
- client-portfolios: Content collection containing portfolio company markdown files
Gallery Directive Examples
Tooling Gallery Examples
New Directive Syntax ✅ (Recommended)
:::tooling-gallery{small="true"}
- [[Flowise]]
- [[Acree AI]]
- [[LangChain]]
- tag: [[Agentic AI]]
- tag: [[Low-Code]]
::: Old YAML Syntax ❌ (Deprecated - Shows Warning)
The ```yaml toolingGallery syntax is deprecated. Please use :::tooling-gallery directive syntax instead.
Build AI Agents, Visually
Open source generative AI development platform for building AI agents, LLM orchestration, and more
Kong
Kong is the most widely adopted API gateway and service mesh, powering the world’s APIs for modern architectures. Accelerate development and productivity today!
A Generalist Multi-Agent System for Solving Complex Tasks
Magentic-One employs a multi-agent architecture where a lead agent, the Orchestrator, directs four other agents to solve tasks. The Orchestrator plans, tracks progress, and re-plans to recover from errors, while directing specialized agents to perform tasks like operating a web browser, navigating local files, or writing and executing Python code.
Data Agents
The DIY AI for Data Do it yourself doesn’t mean do it alone. Numbers Station’s agents are your partners in building AI-native data applications—smarter and faster. Prompt Box Search agent is thinking I...
Label & Curate Multimodal Data for AI
Manage, curate, and label multimodal data such as image, video, audio, document, text and DICOM files – all on one platform. Transform petabytes of unstructured data into high quality data for training, fine-tuning, and aligning AI models, fast.
Low-code programming for event-driven applications
The easiest way to collect, transform and visualize real-time data.
Intelligent apps for hyper efficient operations
Glide makes it easy to build and deploy powerful custom apps powered by AI with no code. Create your first app by trying Glide for free.
Your Team of Personal Assistants
Agent environment for AIs that execute complex multi-step commands on your device through a chat interface. Supports code safety verification, goal-driven execution, and local models with Ollama.
SupportFinity
Find & hire the best talent with AI. Job board, sourcing, ATS, CRM, AI-powered vetting & assessments marketplace. Premium. Secure. FREE. Start at Zero Risk.
embracing small LMs, shifting compute on-device, and cutting cloud costs in the process
Agentforce
Build and customize autonomous AI agents to support your employees and customers 24/7, including full integration with the Salesforce ecosystem.
Make the Web AI-Ready
A suite of tools for connecting your AI to the web. Featuring a query language and parser for interacting with elements and extracting data quickly.
Enterprise Agentic AI
Build, run, and evaluate agentic AI systems with certainty, scale, and resilience.
Empower your digital tasks
Welcome to AutoGPT, where AI amplifies human potential. Our platform empowers you to create intelligent assistants that streamline your digital workflow, enabling you to dedicate more time to innovative and impactful pursuits.
AI Automation Framework
The no-code platform to build and host AI-powered business automations.
Meet Your AI Assistant
Build AI agents in minutes to automate workflows, save time, and grow your business
The Memory Layer for your AI Agents
A self-improving memory layer for LLM applications, enabling personalized AI experiences that save costs and delight users.
Mesina Labs
Create and launch multilingual local voice assistants in minutes
Build Your AI Workforce with MindPal
Build your AI workforce of agents and multi-agent workflows to automate thousands of tasks, as internal productivity tools, as lead magnets for your website, or for monetization
A data access agent with out-of-the-box connectors and agentic query planning.
Your AI assistant that has all the context
Rewind is a personalized AI powered by everything you’ve seen, said, or heard.
DIY AI Agents for Your Team
Effortlessly connect LLM apps like OpenAI Assistants and Anthropic Claude with Slack, Teams, and HubSpot for seamless integration in a few clicks.
Section AI
Section helps organizations adopt, use, and get real value from generative AI
The Web Crawler for AI
Experience cutting-edge web crawling with unparalleled speeds, perfect for LLMs, Machine Learning, and Artificial Intelligence. The fastest and most efficient web scraper tailored for AI applications.
The Enterprise Generative AI Platform
StackAI is a versatile and powerful interface to deploy AI Agents for Enterprise AI. Build AI Applications effortlessly with our drag-and-drop no-code platform.
Your unlimited AI workforce in a single platform
Superduper Agents is a platform for managing a virtual AI workforce that has access and can work with all your data. It allows you to integrate your data infrastructure, meaning your databases with your structured data and unstructured data as well as your other third-party enterprise systems and tools - to automate complex tasks, answer any questions about your data with exact references, and build AI features into your products and services.
Build better software
Supercharge your team with background agents that detect, triage, and fix bugs or ship features—no humans needed.
Enterprise‑Ready Agentic AI
TrueFoundry is a Kubernetes-native AI infrastructure platform built around a low-latency AI Gateway and a powerful deployment layer for fast, scalable execution of agentic AI workloads—including LLM inference, fine-tuning, classic ML serving, training, and agent orchestration. Its developer-first interface works seamlessly across cloud and on-prem environments, with built-in enterprise-grade security, governance, quota management, and cost controls.
UIPath
Empower your business with UiPath automation platform. Leverage agentic automation to drive AI transformation, streamline workflows, and boost productivity.
Vapi
Build, test, and deploy advanced voice AI agents in minutes with Vapi. The platform for developers creating conversational voice AI.
Build AI Agents for nuanced business operations
Zams is the enterprise-grade platform to build, deploy, and manage AI agents that automate workflows, connect tools, and drive business results across operations, sales, and finance.
Get your data LLM-ready.
Unstructured helps you get your data ready for AI by transforming it into a format that large language models can understand. Easily connect your data to LLMs.
Intelligence with everyone
MiniMax is a leading global technology company and one of the pioneers of large language models (LLMs) in Asia. Our mission is to build a world where intelligence thrives with everyone.
Use Agentic AI to Get the Job Done
This Agent is designed to give you a high level analysis bringing together a array of abilities
Otter Meeting Agents are AI Notetakers, Transcribers, and Insight Generators
Otter AI Meeting Agent supports real-time transcription, live chat, automated summaries, insights, and action items.
AI with Purpose: Solve Complex, High Impact Challenges
The deepset AI Platform, powered by Haystack, helps you create custom AI agents and apps with LLM precision, security, and scalability—so you can focus on what matters most. Open, flexible, and built for enterprise.
Building superintelligent autonomous systems
Building super intelligent autonomous systems
Holo
Pipedream
Pipedream is the fastest way to build powerful applications that connect all the services in your stack, with code-level control when you need it and no code when you don't.
Durable.co
Generate a website in 30 seconds with the world's fastest AI website builder. Then, use powerful AI marketing, invoicing, and CRM tools to grow your business. All with one app.
Agentic Experience for your Application
Empower users to take action, automate workflows, and drive outcomes on your application - all through natural language commands.
Beam AI
Automate processes with powerful AI Agents ✓Build & deploy agents in minutes ✓Seamlessly integrate into your workflows ➤ Start automating today!
Cresta
Save money, grow revenue, and deliver better CX with a platform that transforms every level of the contact center.
The Leading Multi-Agent Platform
Streamline workflows across industries with powerful AI agents. Build and deploy automated workflows using any LLM and cloud platform.
Accelerate your entire organization with custom AI agents
The way we work is changing. Break down knowledge silos and amplify team performance with data-augmented, customizable and secure AI agents.
The Operating Platform for GenAI Applications
Build, deploy and monitor on-premise GenAI applications to solve specific business needs, reducing costs, driving revenue and boosting competitiveness - all in one platform
The complete workbench for MCP-enabled agents.
With just a prompt, Hypermode provides the models, coordination, memory, and knowledge to launch your team of agents in minutes. Eject to code at any time for full control.
Orchestrate Smarter Not Harder
Use declarative language to build simpler, faster, scalable and flexible data pipelines
No-code multi-agent framework to build LLM Agents, workflows and applications with your data
No-code platform to build generative AI apps, chatbots and agents with your data.
Lyzr
Build and deploy agents on your cloud with complete privacy, no data leaks, and full control of your IP.
Your Superhuman Business Partner | NOAN
Work smarter with NOAN - the AI teammate that knows it all, does it all, and helps you get more done with seamless, intelligent collaboration. Subscribe today.
ThoughtSpot
Transform insights into action with the ThoughtSpot Agentic Analytics Platform—AI agents, automated insights, and embedded intelligence.
The AI Agent and Assistant platform for enterprises
The Trusted Platform for RAG
Writer
Eliminate silos with an end-to-end agent builder platform, designed for collaboration—without compromise. Build, activate, and supervise agents.
Decision-making on autopilot with data science agents.
Data science agents deliver data-driven decision-making to every business function. Automate complex workflows, remove tedious tasks and deploy across your organization, without increasing headcount.
Flexible AI workflow automation for technical teams
Build with the precision of code or the speed of drag-n-drop. Host with on-prem control or in-the-cloud convenience. n8n gives you more freedom to implement multi-step AI agents and integrate apps than any other tool.
Sourcegraph
Sourcegraph is accelerating how the most important companies in the world build software. Sourcegraph automates routine development tasks with AI agents and a contextual understanding of large codebases, freeing enterprise dev teams of soul-sucking work and improving their ability to innovate.
Background jobs& AI infrastructure
Write workflows in normal async code and we'll handle the rest, from queues to elastic scaling. No timeouts, retries, observability, and zero infrastructure to manage.
The Scalable No-Code Backend
The fastest way to build a powerful, scalable backend for your app without code. Xano is the trusted Backend for over 80,000 SMB and Enterprise applications.
The low-code platform for your high-stakes software
Build mission-critical, enterprise-grade apps that drive competitive advantage, increase speed and agility, and transform business operations.
Image Gallery Examples
New Directive Syntax ✅ (Recommended)
:::image-gallery
- screenshot1.png
- screenshot2.jpg
- diagram.svg
- chart.webp
::: Old YAML Syntax ❌ (Deprecated - Shows Warning)
The ```yaml imageGallery syntax is deprecated. Please use :::image-gallery directive syntax instead.
Portfolio Gallery Examples
Small Portfolio Gallery
:::portfolio-gallery{small="true"}
- [[Aalo Atomics]]
- [[Maven Clinic]]
- [[Trela]]
- tag: [[Telemedicine]]
::: Large Portfolio Gallery
:::portfolio-gallery{small="false" fullWidth="true"}
- [[Aalo Atomics]]
- [[Maven Clinic]]
- [[Trela]]
- [[Ontra]]
- [[Watershed]]
- tag: [[Telemedicine]]
- tag: [[Climate Tech]]
::: Mixed Reference Formats
:::portfolio-gallery
- [[Aalo Atomics]] <!-- filename reference -->
- [[client-content/Hypernova/Portfolio/Watershed]] <!-- full path -->
- tag: [[Telemedicine]] <!-- tag filtering -->
::: Configuration Options
Tooling Gallery Attributes
small="true"- Display compact tool cardssize="small"- Alternative tosmall="true"
Image Gallery Attributes
columns="3"- Number of columns (default: auto)gap="1rem"- Gap between images
Portfolio Gallery Attributes
small="true"- Display compact portfolio cardsexpanded="false"- Control initial expansion statefullWidth="true"- Make gallery take full container widthfull="true"- Alternative tofullWidth="true"
Deprecation Warnings
⚠️ Deprecation Warning
The ```yaml toolingGallery syntax is deprecated.
Please use :::tooling-gallery directive syntax instead. Content Collection Requirements
- Portfolio files must exist in the
client-portfolioscollection - Files should follow the path pattern:
client-content/{Client}/Portfolio/{Company}.md - Portfolio frontmatter should include standard fields:
url,tags,portfolios, etc.
Documentation
Directive Architecture Consistency
tool-showcasedirective for tool galleriesslides/slideshowdirective for presentation embedsfigma-embeddirective for design embeds
Error States
- Portfolio Gallery Error: Red-bordered warning showing missing portfolio paths
- Portfolio Gallery Empty: Debug information when no valid portfolios found
- Unknown Directive: Fallback for unrecognized directive names
Example Usage in Markdown
Live Examples
Build AI Agents, Visually
Agentic AI for Businesses
Kong
A Generalist Multi-Agent System for Solving Complex Tasks
Data Agents
Label & Curate Multimodal Data for AI
Build. Discover. Transact.
Your Team of Personal Assistants
SupportFinity
DSPy
embracing small LMs, shifting compute on-device, and cutting cloud costs in the process
AI-first automation for every team
Adept
AgentOS
Agentforce
Make the Web AI-Ready
Enterprise Agentic AI
AI models to transcribe and understand speech
Empower your digital tasks
Turn complex workflows into a single click
Build production-ready AI agents in both Python and Typescript.
Your AI Assistant for Daily Web Tasks.
DGi
Turn websites into LLM-ready data
Godmode AI
AI Automation Framework
Meet Your AI Assistant
The Memory Layer for your AI Agents
Mesina Labs
Build Your AI Workforce with MindPal
PartyKit - Turn everything into a realtime multiplayer app
A data access agent with out-of-the-box connectors and agentic query planning.
PydanticAI
The leading AI Workforce platform that delivers human-quality work
Your AI assistant that has all the context
DIY AI Agents for Your Team
Section AI
The Web Crawler for AI
The Enterprise Generative AI Platform
Your unlimited AI workforce in a single platform
Build better software
Enterprise‑Ready Agentic AI
UIPath
Vapi
Build AI Agents for nuanced business operations
Get your data LLM-ready.
Intelligence with everyone
Use Agentic AI to Get the Job Done
Otter Meeting Agents are AI Notetakers, Transcribers, and Insight Generators
AI with Purpose: Solve Complex, High Impact Challenges
H-Company
Building superintelligent autonomous systems
Holo
Pipedream
Durable.co
Agentic Experience for your Application
Beam AI
Cresta
The Leading Multi-Agent Platform
Accelerate your entire organization with custom AI agents
The Operating Platform for GenAI Applications
The complete workbench for MCP-enabled agents.
Orchestrate Smarter Not Harder
No-code multi-agent framework to build LLM Agents, workflows and applications with your data
Lyzr
Your Superhuman Business Partner | NOAN
ThoughtSpot
The AI Agent and Assistant platform for enterprises
Writer
Decision-making on autopilot with data science agents.
Flexible AI workflow automation for technical teams
Sourcegraph
Background jobs& AI infrastructure
The ```yaml toolingGallery syntax is deprecated. Please use :::tooling-gallery directive syntax instead.
Build AI Agents, Visually
Agentic AI for Businesses
Kong
A Generalist Multi-Agent System for Solving Complex Tasks
Data Agents
Label & Curate Multimodal Data for AI
Build. Discover. Transact.
Your Team of Personal Assistants
SupportFinity
DSPy
embracing small LMs, shifting compute on-device, and cutting cloud costs in the process
AI-first automation for every team
Adept
AgentOS
Agentforce
Make the Web AI-Ready
Enterprise Agentic AI
AI models to transcribe and understand speech
Empower your digital tasks
Turn complex workflows into a single click
Build production-ready AI agents in both Python and Typescript.
Your AI Assistant for Daily Web Tasks.
DGi
Turn websites into LLM-ready data
Godmode AI
AI Automation Framework
Meet Your AI Assistant
The Memory Layer for your AI Agents
Mesina Labs
Build Your AI Workforce with MindPal
PartyKit - Turn everything into a realtime multiplayer app
A data access agent with out-of-the-box connectors and agentic query planning.
PydanticAI
The leading AI Workforce platform that delivers human-quality work
Your AI assistant that has all the context
DIY AI Agents for Your Team
Section AI
The Web Crawler for AI
The Enterprise Generative AI Platform
Your unlimited AI workforce in a single platform
Build better software
Enterprise‑Ready Agentic AI
UIPath
Vapi
Build AI Agents for nuanced business operations
Get your data LLM-ready.
Intelligence with everyone
Use Agentic AI to Get the Job Done
Otter Meeting Agents are AI Notetakers, Transcribers, and Insight Generators
AI with Purpose: Solve Complex, High Impact Challenges
H-Company
Building superintelligent autonomous systems
Holo
Pipedream
Durable.co
Agentic Experience for your Application
Beam AI
Cresta
The Leading Multi-Agent Platform
Accelerate your entire organization with custom AI agents
The Operating Platform for GenAI Applications
The complete workbench for MCP-enabled agents.
Orchestrate Smarter Not Harder
No-code multi-agent framework to build LLM Agents, workflows and applications with your data
Lyzr
Your Superhuman Business Partner | NOAN
ThoughtSpot
The AI Agent and Assistant platform for enterprises
Writer
Decision-making on autopilot with data science agents.
Flexible AI workflow automation for technical teams
Sourcegraph
Background jobs& AI infrastructure
Welcome to the dawn of a Second Atomic Age
Maven Clinic
Welcome to the dawn of a Second Atomic Age
Creating abundant and dependable clean energy to power humanity for generations.
Maven Clinic
Maven helps companies retain talent, improve health outcomes, and reduce maternity and fertility costs. We support every path to parenthood: Pregnancy, Fertility, Egg Freezing, Adoption, Surrogacy, Infant Care, Breastmilk Shipping, and Manager Training.
O mercado para comer bem. Do seu jeito
Nossa missão é ajudar as pessoas a se alimentarem melhor.
K-12 Cybersecurity Awareness Training - Protect Your School with CyberNut
Affordable K-12-friendly security awareness training solution for schools. CyberNut is your alternative to KnowBe4 and InfoSec.
Pencil Spaces
Pencil Spaces unites video calls, whiteboards, documents, experiments, interactive quizzes, calculators and more in a single tab.
The ```yaml imageGallery syntax is deprecated. Please use :::image-gallery directive syntax instead.
Unknown directive: warning
Debug Info
{
"name": "warning",
"attributes": {
"title": "Custom Title"
}
} - Tooling Galleries: Showcase tools with tag filtering and error handling
- Image Galleries: Display image collections with flexible layout options
- Portfolio Galleries: Present portfolio companies with size and layout controls
- Backward Compatibility: YAML syntax continues to work with deprecation warnings
- Migration Path: Clear guidance for transitioning to directive syntax