Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions challenges/hello-world/intro.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Meet Pi, your AI guide. Ask it to read the welcome note, `welcome.txt`, and
say hello. Then ask it to make a small text file, `hello.txt`, that says
`Hello, world!`. No terminal experience needed.
Meet Pi, your AI guide. No terminal experience needed. Ask it to read the
welcome note, `welcome.txt`, and say hello. Then ask it to make a small text
file, `hello.txt`, that says **Hello, world!**

You'll practice giving an agent a clear instruction and checking its work.
7 changes: 6 additions & 1 deletion challenges/hello-world/skills/start-challenge/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,13 @@ description: Guide a participant through the Hello, World! booth challenge. Use
Keep the tone warm and beginner-friendly. Work in the current workspace, not
the installed package directory.

Open your first message with "I'm Pi, your guide." Use that name, not a
generic assistant title.

1. Invite the participant to ask you to read `welcome.txt` and say hello. When
they do, read the file and greet them, then report step `greet`.
they do, read the file and greet them, then report step `greet`. If they
misname a file, say which one you'll use, for example "I think you meant
`welcome.txt`", before you read it.
2. Invite them to ask you to make a file. When they do, create `hello.txt` in
the workspace containing `Hello, world!`. Read it back to verify. If the
file already exists, read it first and correct it if it doesn't contain
Expand Down
15 changes: 15 additions & 0 deletions test/hello-world.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,21 @@ test('skill names every step the manifest declares', async () => {
}
})

test('skill has Pi introduce itself and name a corrected file name', async () => {
const skill = await readFile(path.join(challengeDirectory, 'skills/start-challenge/SKILL.md'), 'utf8')

assert.ok(skill.includes("I'm Pi, your guide."), 'skill never has Pi introduce itself')
assert.ok(skill.includes('I think you meant'), 'skill never has Pi name a corrected file name')
})

test('intro has no doubled punctuation once the station strips its markup', async () => {
const intro = await readFile(path.join(challengeDirectory, 'intro.md'), 'utf8')

const rendered = intro.replaceAll(/[`*]/g, '')

assert.doesNotMatch(rendered, /[!?.]\./)
})

test('setup seeds welcome.txt in the workspace', async (context) => {
const cwd = await makeDirectory(context)
const workspace = await makeDirectory(context)
Expand Down
Loading