Inspiration

Speaking is the part of learning a language that people practise least, because it needs someone to listen. Apps drill reading and vocabulary, tutors cost money and aren't around at 7 a.m., and many learners feel too self-conscious to send recordings of their own voice to an online service. So they never practise out loud.

The people who feel this most are students, people preparing to move abroad, and heritage speakers: people who grew up hearing a family language, understand it, and freeze when they try to speak it.

An AI NAS changes the equation. Phone voice notes already back up to it, it can transcribe locally, and it keeps everything. That's everything a speaking tutor needs: something that listens, something that remembers, and a private place to do both.

What it does

Speaking Practice Coach is a Uliya Skill with three modes:

  • Review a recording: "Review my Spanish recording from this morning." It transcribes the voice note exactly as spoken, then gives up to 5 corrections with reasons, 3 more natural rewrites, 5 new words, and the mistakes that also appeared in earlier sessions. After approval, it saves a session note.
  • Today's topic: "Give me a French speaking topic for today." It reads past notes and picks a 2-minute prompt that forces practice of the learner's most frequent mistake.
  • Weekly report: "How did my Yoruba go this week?" It shows which mistakes are improving, which still recur, and the new words collected.

Together they form a daily loop: get a topic → record → get feedback → tomorrow's topic targets what went wrong.

How we built it

The Skill is built with the official uliya-skill-kit (0.7.3) and checked against its capability catalog (2.0.0). It delegates to two NAS experts:

Expert Action Used for
file-agent ug-filesystem find Finding the recording
knowledge-agent ug-knowledge audio-transcription Transcribing in the target language, mistakes kept
knowledge-agent ug-knowledge collect-evidence Reading past session notes
knowledge-agent ug-knowledge save-text Saving notes and reports, only after approval

The memory comes from a fixed note format. Every session note uses the same headings (Corrections, New words, Recurring mistakes, Next time), so later runs can reliably pull the learner's history back out of plain text files the learner can read too.

The Skill handles all five delegation states (completed, failed, cancelled, waiting_user, waiting_approval) and passes the kit's static checker with 0 errors and 0 warnings.

Challenges we ran into

  • Learning the real Skill format. My first draft followed the website description and failed the kit checker with 6 errors: wrong folder layout, missing required sections, and no expert delegation. Rebuilding it around delegate commands and the exact section structure is what got it to a clean pass.
  • Transcribing learner speech. Transcription tends to "fix" what it hears, and learners make mistakes on purpose-free. Feedback built on a misheard word would be wrong. So the Skill asks for speech exactly as spoken, shows the transcript first, and lets the learner flag misheard words before any feedback is given.
  • No append, but memory needed. Saving creates new files rather than editing old ones. Instead of fighting that, each session became its own note with fixed headings, and the history is rebuilt by reading them all.
  • Choosing the idea. I started with a family story archive, but it is something people would use a few times a year. I switched to a daily habit, because usefulness is about how often a tool earns its place.

What I learned

  • A good Skill is mostly careful workflow design: what each step reads, what it is allowed to write, and what happens when a result comes back empty.
  • Being honest about limits makes the design better. This Skill does not score pronunciation, and it says so. When the NAS repeatedly mishears a word, that is offered as a hint to check pronunciation, not a grade.

What's next

In the finalist session I will test transcription of real learner-style recordings in at least three languages, including one African language such as Yoruba, compare the transcripts with what was actually said, and tune the instructions from the results. If a language isn't supported on the device, the Skill already says so instead of guessing.

Built With

  • file-agent
  • knowledge-agent
  • markdown
  • ug-filesystem
  • ug-knowledge
  • ugos
  • ugreen-ai-nas
  • uliya-skill-kit
Share this project:

Updates

Submission history