By Aaron Tay, Head, Data Services
Understanding agents and agentic workflows has become one of the hottest topics today. Over the past year, it has also become one of the most requested workshop areas for the library.
My library colleagues and I have started experimenting with Claude Code and Codex early this year, and though we don’t consider ourselves experts, we decided to share what we had learned through a series of workshops. The response was very encouraging: the in-person workshop reached its limit of 50 participants, while the online sessions drew more than 100 participants..
1. Fundamentals: Web vs Code vs Cowork
The first workshop was designed as a foundation.
We believe that while many people are already familiar with chatbots and prompt engineering, working with agents and agentic systems is a totally different proposition. It requires understanding what agents are, how they work, and what kinds of workflows they are best suited for before jumping into vibe coding.
In fact, designing agents well means going beyond prompt engineering towards context engineering, harness engineering and loop engineering.
.png)
The first workshop covered:
- The definition of agents
- The distinction between agents and agentic workflows and why you may not always want agents
- Understanding concepts such as harness, skills, tools, context windows
- Understanding the importance of use of scripts and assets in skills
- The major difference between Claude.ai and Claude Code
We also walked through an example of a skill designed to search Scite and Consensus MCP, merge and deduplicate the results, and generate an answer with in-text citations.
We showed that stronger models would generally follow the instructions in the skill, while weaker models were more likely to fail.
In this simple example, replacing one part of the workflow — the deduplication step — with a script improved the performance of even the weaker models by reducing the load on the context window.
.png)
In a later session, I used an analogy comparing a model’s context window to working memory. If you are given a long series of instructions that includes multiplication, Scenario A gives you a calculator to help, while Scenario B requires you to do everything by hand. Clearly, Scenario A is much easier.
This illustrates an important principle: use non-deterministic LLMs for tasks that require soft judgement, and use scripts wherever possible for hard tasks that benefit from deterministic outcomes.
I ended the session with a quick overview of guardrails.
To accommodate the strong demand, I converted this workshop into an online webinar, though unfortunately we ran into technical difficulties on the day.
However, the recording is available here. Please sign in with your Zoom account to access it.
2. Vibe-coding & Version Control in your Codex/Claude Code
Agentic coding harnesses such as Claude Code or Codex make it much easier to change code and add features. But they also make it very easy to vibe-code your way into trouble.
That is why version control has never been more important. I learned this myself during my first vibe-coding project and quickly switched to using Git and GitHub to track changes.

That experience led to the idea for the second workshop. My colleague Bella has been teaching version control with Git and GitHub for many years, but the topic has become even more important — and, in some ways, easier to approach. With LLMs handling much of the execution and command syntax, learners can focus more on understanding the concepts.
This was a fully in-person workshop, so there is no recording, but the slide deck is available.
3. LLM-Assisted Text Analysis: From Open-Ended Responses to Structured Insights
My colleague Danping has been using machine learning tools such as BERTopic, as well as LLMs directly, for clustering and classification.

In this workshop, she introduced a practical method for converting open-ended textual responses into structured insights using large language models.
Using a dataset of reviews with rich metadata, the workshop began by examining the challenges of manual analysis: reviews containing multiple judgements, inconsistent interpretations, and the difficulty of processing hundreds of records.
She then explained how to move from exploratory conversations with a chat assistant to a repeatable workflow built around an LLM API, with clearly defined inputs and structured outputs.

This was also a fully in-person workshop, so there is no recording, but the slide deck is available.
4. Build your own “advanced” workflow with MCP and Skills
The final workshop brought together ideas from the first three sessions.
Building on the first session, I first showed how to install a local MCP server from GitHub that searches Primo and the SMU Libraries local collection. The session then demonstrated how to create a skill that allows the LLM to decide whether to search for articles using Scite and Consensus MCP, monographs using the locally installed Primo MCP, or both.

The main focus, however, was on creating deterministic guardrails. This included discussion of more advanced topics such as using hooks to guarantee the skill use of scripts, as well as subagents and prompt caching.

This was an online session, and the recording is available here. Please sign in with your Zoom account to access it.
Conclusion
This was our first time running a brand-new workshop series on a fast-moving topic, so we were not always sure what would be most useful to the audience. We also had to think carefully about examples that would be relatable to a varied group of participants. Thank you again for your support and feedback. We will take what we have learned and use it to improve future sessions.