Reinstate template examples
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 70/100
- Issue type
- Documentation
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript, yaml
- Domain
- documentation, testing
Research direction
The task is to move the 14 stashed YAML template examples from the issue body into the central conformance/test_data/templates/ directory or a dedicated specification gallery. First, locate the target directory in the repository. Then, create each YAML file with the exact content provided, ensuring the copyright header is included. Verify the files are placed correctly and that they follow the existing naming and structure conventions. Check if any existing tests reference these examples to ensure they are integrated.
Written by the indexing model from the issue text.
Description
Overview
As the A2UI template feature graduates from experimental to a stable feature across client and agent SDKs, reinstate or graduate the language-agnostic template reference examples into the central conformance/test_data/templates/ directory (or a dedicated specification gallery).
Background
In PR #2380 and #2381, the A2UI template specification was formalized as a Spec-Driven Development Feature Blueprint (blueprints/features/templates.blueprint.md), and the data-driven test suites are currently maintained within the Python SDK (agent_sdks/python/a2ui_agent/tests/inference_formats/experimental/template/conformance/suites/).
To keep the initial blueprint PR tight and focused on architectural and schema contracts, the 14 standalone reference template YAML files were removed from specification/proposals/templates/examples/. They are stashed below in full for future reference when cross-language test suites (Swift, Kotlin, TypeScript, Dart) are ready to consume them.
Click to expand: 14 Stashed Reference Template Definitions (YAML)
basic_cards.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: SimpleCard
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
title:
type: string
description: Primary card title
subtitle:
type: string
required: false
layout:
component: Card
child:
component: Column
children:
- component: Text
text: ${title}
variant: h2
---
version: "0.1"
name: ProfileHeader
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
name:
type: string
avatarUrl:
type: string
layout:
component: Row
align: center
children:
- component: Image
url: ${avatarUrl}
variant: avatar
- component: Text
text: ${name}
variant: h3
slot_composition.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: ContainerSlot
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
title:
type: string
contentSlot:
type: child
layout:
component: Card
child:
component: Column
children:
- component: Text
text: ${title}
- component: ${contentSlot}
---
version: "0.1"
name: ActionButton
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
label:
type: string
onPress:
type: action
layout:
component: Button
text: ${label}
action: ${onPress}
nested_lists.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: MemberList
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
teamName:
type: string
members:
type: array
layout:
component: Card
child:
component: Column
children:
- component: Text
text: ${teamName}
variant: h2
- component: Column
children:
loop:
param: members
as: member
item:
component: Row
children:
- component: Text
text: ${member.name}
- component: Text
text: ${member.role}
variant: caption
salary_card.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: SalaryCard
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
employeeId:
type: string
employeeName:
type: string
role:
type: string
baseSalary:
type: string
annualBonus:
type: string
layout:
component: Card
child:
component: Column
children:
- component: Row
justify: spaceBetween
align: center
children:
- component: Text
text: ${employeeName}
variant: h3
- component: Text
text: ${role}
variant: caption
- component: Divider
axis: horizontal
- component: Row
justify: spaceBetween
children:
- component: Text
text: "Base Salary"
variant: caption
- component: Text
text: ${baseSalary}
variant: body
- component: Row
justify: spaceBetween
children:
- component: Text
text: "Annual Bonus"
variant: caption
- component: Text
text: ${annualBonus}
variant: body
user_profile.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: UserProfile
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
userId:
type: string
userName:
type: string
role:
type: string
default: Member
layout:
component: Card
child:
component: Column
align: center
children:
- component: Icon
name: account_circle
- component: Text
text: ${userName}
variant: h2
- component: Text
text: ${role}
variant: caption
feedback_item.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: FeedbackItem
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
author:
type: string
category:
type: string
text:
type: string
status:
type: string
default: "New"
layout:
component: Card
child:
component: Column
children:
- component: Row
justify: spaceBetween
children:
- component: Text
text: ${author}
variant: h4
- component: Text
text: ${category}
variant: caption
- component: Text
text: ${text}
variant: body
- component: Text
text: "Status: ${status}"
variant: caption
goal_item.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: GoalItem
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
title:
type: string
priority:
type: string
default: Medium
targetDate:
type: string
layout:
component: Card
child:
component: Row
justify: spaceBetween
align: center
children:
- component: Column
children:
- component: Text
text: ${title}
variant: body
- component: Text
text: "Target: ${targetDate}"
variant: caption
- component: Text
text: ${priority}
variant: caption
section_card.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: SectionCard
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
title:
type: string
description:
type: string
required: false
headerAction:
type: child
required: false
children:
type: children
layout:
component: Card
child:
component: Column
children:
- component: Row
justify: spaceBetween
align: center
children:
- component: Column
children:
- component: Text
text: ${title}
variant: h3
- component: Text
text: ${description}
variant: caption
- component: ${headerAction}
- component: Divider
axis: horizontal
- component: Column
children: ${children}
team_card.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: TeamCard
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
teamName:
type: string
leadName:
type: string
memberCount:
type: integer
default: 1
layout:
component: Card
child:
component: Column
children:
- component: Text
text: ${teamName}
variant: h2
- component: Row
justify: spaceBetween
children:
- component: Text
text: "Lead: ${leadName}"
variant: body
- component: Text
text: "${memberCount} Members"
variant: caption
team_feedback_board.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: TeamFeedbackBoard
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
teamName:
type: string
items:
type: array
layout:
component: Card
child:
component: Column
children:
- component: Text
text: "Feedback Board: ${teamName}"
variant: h2
- component: Column
children:
loop:
param: items
as: item
item:
component: Row
justify: spaceBetween
children:
- component: Text
text: ${item.text}
- component: Text
text: ${item.author}
variant: caption
team_goal_list.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: TeamGoalList
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
teamName:
type: string
goals:
type: array
layout:
component: Card
child:
component: Column
children:
- component: Text
text: "${teamName} OKRs"
variant: h2
- component: Column
children:
loop:
param: goals
as: goal
item:
component: Row
justify: spaceBetween
children:
- component: Text
text: ${goal.title}
- component: Text
text: ${goal.targetDate}
variant: caption
team_member_knowledge_panel.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: TeamMemberKnowledgePanel
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
memberName:
type: string
role:
type: string
department:
type: string
skills:
type: array
layout:
component: Card
child:
component: Column
children:
- component: Text
text: ${memberName}
variant: h2
- component: Text
text: "${role} • ${department}"
variant: caption
- component: Divider
axis: horizontal
- component: Text
text: "Skills & Expertise"
variant: h4
- component: Row
children:
loop:
param: skills
as: skill
item:
component: Text
text: "${skill} "
variant: caption
team_roster.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: TeamRoster
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
teamName:
type: string
members:
type: array
layout:
component: Card
child:
component: Column
children:
- component: Text
text: "Team Roster: ${teamName}"
variant: h2
- component: Column
children:
loop:
param: members
as: member
item:
component: Text
text: "• ${member}"
variant: body
two_column_layout.yaml
# Copyright 2024 Google LLC
# Apache-2.0
version: "0.1"
name: TwoColumnLayout
catalogs:
- "https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"
parameters:
leftSlot:
type: child
rightSlot:
type: child
layout:
component: Row
children:
- component: ${leftSlot}
- component: ${rightSlot}
- Dominant language
- TypeScript
- Stars
- 16.4k
- Forks
- 1.3k
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 117
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from a2ui-project/a2ui
-
P2 status: first-line-handled type: feature/enhancement
Difficulty 1/5 Under an hour Newbie friendliness 85/100
a2ui-project/a2ui#2643 · 2 comments · 1 assignee ·
-
P2
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
a2ui-project/a2ui#2599 ·
-
P2 status: first-line-handled status: needs review type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
a2ui-project/a2ui#2581 · 1 comment · 1 assignee ·
-
P2 status: first-line-handled status: waiting-for-author-response type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
a2ui-project/a2ui#2580 · 1 comment · 1 assignee ·
-
P2 status: first-line-handled type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
a2ui-project/a2ui#2579 · 2 comments · 1 assignee ·
All issues in a2ui-project/a2ui
Similar issues
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 91/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 95/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Automattic/studio#4908 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100