[Plan] Propose a curation mechanism for "AI Official" modules and recipes
>>> [!note] Migrated issue
<!-- Drupal.org comment -->
<!-- Migrated from issue #3558927. -->
Reported by: [afoster](https://www.drupal.org/user/594458)
>>>
<p>[Tracker]<br>
<strong>Update Summary: </strong>Plan under discussion; consensus to implement after AI dashboard MVP ships<br>
<strong>Short Description: </strong>Centralized for AI Official modules, recipes, and config page organization<br>
<strong>Check-in Date: </strong>11/25/2025<br>
<em>Metadata is used by the <a href="https://www.drupalstarforge.ai/" title="AI Tracker">AI Tracker.</a> Docs and additional fields <a href="https://www.drupalstarforge.ai/ai-dashboard/docs" title="AI Issue Tracker Documentation">here</a>.</em><br>
[/Tracker]</p>
<h2>TLDR: </h2>
<p>This plan proposes creating a centralized YAML file (ai_official_projects.yml) within AI Core to serve as a single source of truth for curating "AI Official" modules and recipes. It addresses two UX problems: (1) the ai_dashboard needs a curated list rather than a local file, and (2) the /admin/config/ai page shows a flat, overwhelming list of config links with no hierarchy. </p>
<h2 id="problem-motivation">Problem/Motivation</h2>
<p>We are facing two related UX challenges that can be solved with a single, centralized mechanism: <br><br>
<img src="https://www.drupal.org/files/issues/2025-11-19/Screenshot%202025-11-19%20at%205.44.41%E2%80%AFPM.png" alt="Mockup of UI"></p>
<ol>
<li><strong>Curation for the <code>ai_dashboard</code>:</strong> As noted in issue #3557873, the new dashboard needs a way to present a curated, high-quality list of modules and recipes. The current proof-of-concept, a local YAML file, is a great start but should be centralized to benefit the entire ecosystem.</li>
<li><strong>Organization of the AI Overview Page:</strong> The main AI overview page (<code>/admin/config/ai</code>) presents a flat, unorganized list of all AI-related configuration links (e.g., 'AI Agents', 'Default Settings', 'Vector DB Settings'). As discussed in the AI UX check-in, these items are not equal in importance or function. This lack of hierarchy makes the page intimidating and difficult to navigate.</li>
</ol>
<p> <img src="https://www.drupal.org/files/issues/2025-11-19/Screenshot%202025-11-19%20at%206.16.02%E2%80%AFPM.png" alt="AI main page"></p>
<p>The attached <code>AI Modules and Recipes</code> diagram shows a clear distinction between <code>AI Core</code>, <code>AI Official</code>, and <code>AI Contrib</code>. To bring this clarity to the UI, we need a formal mechanism for both curation and categorization.<br><br>
<img src="https://www.drupal.org/files/issues/2025-11-19/Screenshot%202025-11-19%20at%205.39.24%E2%80%AFPM.png" alt="chart with AI core and AI official">
</p>
<h2 id="proposed-resolution">Proposed resolution</h2>
<p>We propose to build upon the work in the <code>ai_dashboard</code> project by moving a similar, but expanded, curation and categorization mechanism into the <strong><code>AI Core</code></strong> module.</p>
<p>This would be implemented via a single YAML file within <code>AI Core</code> (e.g., <code>ai_official_projects.yml</code>). This file would serve as the canonical "single source of truth" for defining "AI Official" projects and assigning them to consistent categories. This would apply to external projects (modules, recipes) and internal configuration pages alike.</p>
<p><strong>Example <code>ai_official_projects.yml</code>:</strong></p>
<pre><div class="codeblock"><code class="lang-yaml"># --- For the Dashboard "Extensions" list ---<br># Recipes<br>llm_optimized_content:<br> type: recipe<br> category: 'Content Features'<br> # ... other metadata like name, description, image ...<br><br># Modules<br>ai_chatbot:<br> type: module<br> category: 'AI Applications'<br>openai:<br> type: module<br> category: 'AI Providers'<br><br># --- For the AI Overview Page ---<br># Internal Configuration Links<br>ai_agent.settings:<br> type: internal_config<br> category: 'AI Applications'<br> # Provides a route name for the link<br>ai.default_settings:<br> type: internal_config<br> category: 'Core Settings'<br>vector_db.settings:<br> type: internal_config<br> category: 'AI Search'<p><strong>How it would be used:</strong></p>
<p>This single source of truth would power multiple UIs, ensuring consistency:</p>
<ul>
<li><strong><code>ai_dashboard</code> Module:</strong> The dashboard will use this list to display a curated set of official modules and recipes in its "Extensions" section, grouped by categories like 'Content Features' and 'AI Providers'.</li>
<li><strong><code>ai_core</code> Module:</strong> The core module will use this same file to reorganize the <code>/admin/config/ai</code> overview page. Links will be grouped into logical sections like 'Core Settings' and 'AI Applications', creating a much more intuitive information architecture.</li>
</ul>
<h2 id="remaining-tasks">Remaining Tasks</h2>
<ol>
<li>Gather feedback from the AI Core team on this proposed centralization.</li>
<li>If approved, finalize the structure of the <code>ai_official_projects.yml</code> file.</li>
<li>Create the initial list and categories for official modules, recipes, and internal config pages.</li>
<li>Update the <code>ai_dashboard</code> module to consume this new centralized list.</li>
<li>Create an implementation issue to redesign the <code>/admin/config/ai</code> page to render its links in categorized groups.</li>
</ol>
<h2 id="user-interface-changes">User interface changes</h2>
<ul>
<li>The "Extensions" section of the <code>ai_dashboard</code> page will display a curated list of projects. A secondary action (e.g., "View all") will allow access to the full, un-curated list.</li>
<li>The <code>/admin/config/ai</code> page will be reorganized from a flat list into categorized groups (e.g., collapsible sections or distinct cards).</li>
</ul>
<h2 id="api-changes">API changes</h2>
<ul>
<li>A new service could be added to <code>AI Core</code> to make the official project list and categories programmatically available.</li>
</ul>
<h2 id="data-model-changes">Data model changes</h2>
<ul>
<li>A new YAML file will be added to the <code>AI Core</code> module to store the curated and categorized list.</li>
</ul>
<h2 id="related-issues">Related Issues</h2>
<ul>
<li><a href="https://www.drupal.org/project/ai_dashboard/issues/3557873">#3557873: [Plan] Create a MVP of the AI Dashboard</a></li>
</ul>
</code></div></pre>
> Related issue: [Issue #3557873](https://www.drupal.org/node/3557873)
> Related issue: [Issue #3568640](https://www.drupal.org/node/3568640)
> Related issue: [Issue #3568028](https://www.drupal.org/node/3568028)
> Related issue: [Issue #3558401](https://www.drupal.org/node/3558401)
issue