Your first story
One command scaffolds a complete, playable story project:
sharpee init orchard
init asks a few questions (title, author, blurb); pass -y to accept
the defaults. The scaffold is a Chord project. If you want the
TypeScript story scaffold instead, that is sharpee init orchard --ts,
and it belongs to the Sharpee platform track.
📖 Create a new Sharpee story
Creating project...
✓ Created orchard.story
✓ Created package.json
✓ Created .gitignore
🌐 Adding browser client to your Sharpee project
✓ Created src/browser-entry.ts (Chord — compiles story.story at boot)
✓ Created src/version.ts
✓ Created browser/orchard.css
✓ Updated package.json (deps + build:browser)
✅ Project created!
Next steps:
cd orchard
npm install
sharpee build # story + playable web client → dist/web/<id>/
sharpee play # play in the terminal
Your story lives in orchard.story — edit it and rebuild.
Run those next steps as printed: cd orchard, then npm install to
fetch the platform packages.
The story file
The whole game is orchard.story. The scaffold's version is a one-room
world, and it already shows the shape of everything to come:
story "orchard" by "you"
id: orchard
version: 0.1.0
blurb: An interactive fiction adventure
create the Landing
a room
A quiet place to begin. Doorways lead everywhere a story might go —
for now, this landing is the whole world.
create the brass lantern
aka lamp
An old brass lantern, dented but serviceable.
create the player
starts in the Landing
carries the brass lantern
Three things to notice, because they are the grammar of every Chord story:
- The story header opens the file: title, author, and
key: valuefacts about the story as a whole. createblocks declare entities. Indented lines state facts about them:a roomcomposes a kind,aka lampadds a player-facing synonym,starts inandcarriesplace things.- Bare prose is description. A paragraph after a blank line inside a
createblock is what the player sees. No quotes, no keywords; prose is a first-class part of the language.
Chord is line-oriented and indentation-scoped (spaces, not tabs). There are no braces and no statement terminators; the layout is the structure.
Edit and go
Change the Landing's description, save, and the next build or play picks it up. The story compiles at build time, and mistakes come back as named, line-anchored diagnostics rather than runtime surprises.