Two lists, a calendar view, a conflict-detection skill, a user-filtered view, and a homepage that pulls it all together. The composition is the app.
A composite app is two or more lists wired together by skills and surfaced through a unified homepage. The time-off tracker has two lists (requests and team availability), four skills (request, review, approve, check availability), and one page that ties them together. None of these pieces is custom code.
The author built each piece independently with its own Ralph Loop, then composed them on the homepage at the end. The composition step is fast because every piece already works in isolation.
A calendar view renders list rows as events on a month grid. Each row's start and end dates become a calendar block. The view inherits the list's filters and groupings, so you can show "approved time off only" or "this department" without changing the underlying list.
In the demo, after the agent finishes, the team-availability list has a calendar view as its default. People-out-this-week become coloured blocks. The agent also stamps a "team availability" view that groups the same data by department.
A conflict-detection skill reads the time-off list, finds requests that overlap with the new one, and reports them before the user submits. In the demo the author requests time off on March 20th; the skill spots an overlapping request he already filed, and reports the coverage conflict back.
SharePoint lists can filter rows by the current user — so each viewer sees only the requests they created, or only the ones they manage. The demo flags this: the author sees every request because he's the site owner, but in normal use each person sees only their own.
This is the SharePoint equivalent of row-level security combined with default UI scoping. The agent can set it up when it creates the view; you don't have to think about it again.
The homepage is where the parts meet the user. The author edits a blank page, starts a fresh chat (no Ralph Loop this time), and dictates five sections: quick actions, embedded team schedule, my requests, prompts/utterances, and the list browse links. The agent assembles the page; the lists and skills it references already exist.
The final result: quick action buttons that fire the request and review skills. A live calendar embed. A filtered request list. Free-form chat that resolves utterances like "who is out the week of March 12th" by calling the availability skill. Twenty minutes of run time, two or three minutes of human attention.