Skip to content

feat(ui): add Learn view with concept and example documentation - #412

Open
JuanmaBM wants to merge 7 commits into
openshift-online:mainfrom
JuanmaBM:feat/ui-learn-view
Open

feat(ui): add Learn view with concept and example documentation#412
JuanmaBM wants to merge 7 commits into
openshift-online:mainfrom
JuanmaBM:feat/ui-learn-view

Conversation

@JuanmaBM

@JuanmaBM JuanmaBM commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add Learn view to the UI with Concepts and Examples sections, accessible from the sidebar
  • Add 8 new concept pages for platform users: Architecture, Payloads, MCP Integration, RBAC, Work Tracking, Session Sharing, Multi-Agent Teams, Session Config
  • Add 5 example agent docs: Hello World, PR Reviewer, Security Reviewer, Jira Categorizer, Repo Clone Workspace
  • Learn content is loaded from markdown files in docs/src/content/docs/concepts/ and examples/docs/

🤖 Generated with Claude Code

JuanmaBM and others added 3 commits July 17, 2026 12:24
Implement the Learn view spec: a global sidebar entry that renders
static markdown content at build time. Includes landing page with
card grids, detail pages with GFM rendering, Makefile pre-build
copy step for Docker builds, and dual-path content resolution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add user-facing concept documentation covering architecture, payloads,
MCP integration, RBAC, work tracking, session sharing, multi-agent
teams, and session config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Restrict LearnCard href to /learn/ prefix to prevent stored XSS
(CodeQL alert). Shorten work-tracking.md opening sentence to satisfy
Vale sentence-length rule.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
**CLI** — use `acpctl` to list tools or call them directly:

```bash
acpctl mcp tools

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Is this supposed to exist or planned?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

It's part of the repository documentation, so I guess it's correct. Right now it's not implemented, but not sure about the plans for it. Anyway, if we decide to not implemented, we'll remove it from the documentation.

JuanmaBM and others added 3 commits July 20, 2026 12:11
Build the URL inside LearnCard using encodeURIComponent on the slug
instead of accepting a raw href prop. Replace 'vTeam' references in
multi-agent-teams.md to satisfy ACP.Terminology Vale rule.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 'sandboxed' and 'Landlock' to cspell dictionary. Replace 'topbar'
with 'notification' in work-tracking.md to avoid unknown word.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
.learn-content/ is gitignored and only populated by the Makefile
pre-build step. Konflux builds directly from git where the directory
does not exist, causing the COPY to fail. Replace with a conditional
cp in a RUN step so the build succeeds with an empty /learn-content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@jsell-rh jsell-rh left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Amber Review

Clean implementation. Conventions followed throughout.

Checklist:

  • ✅ Zero any types in TypeScript
  • ✅ Shadcn components only (Card, Button, CardHeader, CardTitle, CardDescription)
  • type over interface (LearnItem, LearnCardProps, MarkdownRendererProps, PageProps)
  • ✅ Loading and empty states handled (EmptyState component used)
  • ✅ Server-side filesystem reads — no fetch() in components
  • encodeURIComponent(slug) on URL segments in LearnCard
  • getConceptBySlug/getExampleBySlug match against pre-enumerated slugs from disk — no path traversal risk
  • @tailwindcss/typography (required for prose classes) already in package.json
  • react-markdown and remark-gfm already in package.json
  • generateStaticParams provided — pages are statically generated at build time

One minor note (no action needed): getConceptBySlug(slug) calls loadConcepts() which re-reads the full directory. For a static learn section this is fine; if content ever grows large enough to matter, a module-level const concepts = loadConcepts() cache would fix it.

Makefile duplication: The mkdir/cp/rm block for .learn-content appears in both build-ambient-ui and kind-reload-ambient-ui. Extracting to a shared Make target or variable would keep it DRY, but not a blocker.

No blockers.

— Amber

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants